Ansible常用Ad-Hoc 命令

1.配置sshpass

yum install sshpass -y 
ssh-keygen -t dsa  -f ~/.ssh/id_dsa  -P ""   # ssh-keygen密钥生成工具 -t密钥类型为dsa -f指定生成的密钥文件的路径。 -P:指定私钥的密码。
for i in `seq 128 130`; do sshpass -p'123456' ssh-copy-id -i ~/.ssh/id_dsa.pub -o StrictHostKeyChecking=no -p22 root@192.168.80.$i;done

sshpass -p’123456’ 指定密码。
ssh-copy-id -i ~/.ssh/id_dsa.pub 将本地用户的 SSH 公钥复制到远程主机的 ~/.ssh/authorized_keys 文件中,从而实现免密登录。
-o StrictHostKeyChecking=no SSH 选项,禁用主机密钥检查。

2.添加主机清单
主机清单文件定义了 Ansible 管理的目标主机。
默认位置为 /etc/ansible/hosts。

[k8scluster]
192.168.80.128
192.168.80.129
192.168.80.130

3.常用参数说明

1.ansible 命令参数

用于直接执行 Ad-Hoc 任务。
-m <模块名> 指定使用的模块(如 ping, shell, copy)。

ansible all -m ping

-a “<参数>” 传递模块的参数(格式为 key=value)。

ansible webservers -m command -a "uptime"

-i <路径> 指定自定义库存文件(Inventory)。

ansible all -i hosts.cfg -m ping

-u <用户名> 指定远程 SSH 用户。

ansible all -u admin -m ping

-b 提权(如 sudo)。

ansible all -b -m apt -a "name=nginx"

–become-user 提权后的用户(默认 root)。

ansible all -b --become-user=admin

–private-key 指定 SSH 私钥路径。

ansible all --private-key=~/.ssh/id_rsa

-v / -vvv 输出详细日志(-v 到 -vvvv 详细度递增)。

ansible all -vvv -m ping

–limit 限制执行的主机(支持模式匹配)。

ansible all --limit "web[01:03]"

–check 模拟运行(不实际执行)。

ansible all -m command -a "reboot" --check

-become
–become 参数用于启用权限提升功能。这意味着 Ansible 将以更高的权限(通常是 root 用户)执行指定的命令。这在需要对系统进行管理操作(如重启)时非常有用。
–ask-become-pass 参数会提示用户输入权限提升所需的密码。

ansible webservers -m command -a "/sbin/reboot" --become --ask-become-pass

2.ansible-playbook 命令参数

Playbook 是 Ansible 的配置、部署和编排语言,用于定义任务序列。

参数说明
-h, --help显示帮助信息并退出。
-i INVENTORY, --inventory INVENTORY指定库存文件或路径,默认为 /etc/ansible/hosts
-l SUBSET, --limit SUBSET进一步限制所选主机为附加的模式。
-u REMOTE_USER, --user REMOTE_USER以该用户身份连接,默认为 None
-k, --ask-pass询问连接密码。
-K, --ask-become-pass请求权限提升密码。
--become-method BECOME_METHOD指定权限提升方法,默认为 sudo
--become-user BECOME_USER指定权限提升后使用的用户,默认为 root
-c CONNECTION, --connection CONNECTION指定连接类型,默认为 ssh
-e EXTRA_VARS, --extra-vars EXTRA_VARS指定额外变量,格式为 key=value 或 YAML/JSON 文件路径。
-f FORKS, --forks FORKS指定并行任务数,默认为 5。
-v, --verbose增加输出的详细程度,可多次指定以提高详细级别。
-C, --check不进行任何更改;而是尝试预测可能发生的一些更改。
--diff在更改文件时,显示这些文件中的差异。
--list-hosts输出匹配主机的列表,不执行任何其他操作。
--list-tasks列出 Playbook 中的所有任务。
--list-tags列出 Playbook 中的所有标签。
-t TAGS, --tags TAGS仅运行带有这些标签的任务。
--skip-tags SKIP_TAGS跳过带有这些标签的任务。
--start-at-task START_AT_TASK从指定任务开始执行 Playbook。
--step一次一步:在运行每个任务之前确认。
--syntax-check检查 Playbook 中的语法书写。
--vault-id VAULT_IDS指定 Vault 身份。
--vault-password-file指定 Vault 密码文件。
--playbook-dir BASEDIR指定替代的 playbook 目录。

示例:
执行 Playbook:

ansible-playbook site.yml

指定库存文件:

ansible-playbook site.yml -i hosts

限制主机范围:

ansible-playbook site.yml -i hosts -l webserver

指定连接用户:

ansible-playbook site.yml -i hosts -u ansible_user

请求权限提升密码:

ansible-playbook site.yml -i hosts -K

指定额外变量:

ansible-playbook site.yml -i hosts -e "ansible_user=root"

模拟运行 Playbook:

ansible-playbook site.yml -i hosts -C

仅运行带有特定标签的任务:

ansible-playbook site.yml -i hosts -t mytag

–syntax-check 检查 Playbook 语法。

ansible-playbook site.yml --syntax-check

–list-tasks 列出 Playbook 中的任务。

ansible-playbook site.yml --list-tasks

–list-tags 列出 Playbook 中的标签。

ansible-playbook site.yml --list-tags

–tags <标签> 仅执行指定标签的任务。

ansible-playbook site.yml --tags "deploy,config"

–skip-tags 跳过指定标签的任务。

ansible-playbook site.yml --skip-tags "test"

–start-at-task 从指定任务开始执行。

ansible-playbook site.yml --start-at-task "Install Nginx"

–step 逐步确认每个任务是否执行。

ansible-playbook site.yml --step

–diff 显示文件变更的差异(需模块支持)。

ansible-playbook site.yml --diff

3.ansible-galaxy 命令参数

用于管理 Roles。
init 初始化一个 Role 目录结构。

ansible-galaxy init my_role

install 从 Galaxy 或 Git 安装 Role。

ansible-galaxy install geerlingguy.nginx

list 列出已安装的 Roles。

ansible-galaxy list

remove 删除已安装的 Role。

ansible-galaxy remove geerlingguy.nginx

search 搜索 Galaxy 中的 Roles。

ansible-galaxy search "nginx"

4.ansible-doc常用参数

在这里插入图片描述
使用示例
查看所有模块:

ansible-doc -l

查看特定模块的文档:

ansible-doc <module_name>

例如,查看 copy 模块的详细文档:

ansible-doc copy

显示模块的示例用法:

ansible-doc -s <module_name>

例如,查看 copy 模块的示例用法:

ansible-doc -s copy

按类型过滤模块:

ansible-doc -t <type>

例如,列出所有文件操作相关的模块:

ansible-doc -t file

以 JSON 格式输出模块信息:

ansible-doc -j <module_name>

例如,以 JSON 格式输出 ping 模块的信息:

ansible-doc -j ping

增加输出的详细程度:

ansible-doc -v <module_name>
ansible-doc -vvv ping

5.ansible-pull常用参数

ansible-pull 是 Ansible 的一个命令行工具,用于从版本控制系统(VCS)仓库拉取 playbook,并在目标主机上执行。它将 Ansible 的默认推式架构转换为拉式架构,适用于大规模主机配置管理
在这里插入图片描述
在这里插入图片描述

使用示例
以下是一个使用 ansible-pull 的示例,从 Git 仓库拉取 playbook 并执行:

ansible-pull -U https://github.com/your-repo/ansible-playbooks.git -d /opt/ansible-playbooks -i hosts -v playbook.yml

注意事项
ansible-pull 通常与 crontab 配合使用,以定期执行 playbook。
确保目标主机上安装了必要的 VCS 工具(如 Git)。
使用 --ask-vault-pass 或 --vault-password-file 管理敏感信息。

6.ansible-config命令常用参数

用于查看和管理 Ansible 的配置文件
常用参数

参数说明
-h, --help显示帮助信息并退出。
--version显示程序的版本号、配置文件位置、配置的模块搜索路径、模块位置、可执行文件位置并退出。
-v, --verbose增加输出的详细程度,可多次指定以提高详细级别。
list列出并输出可用的配置选项。
dump显示当前的配置设置,如果有指定则合并 ansible.cfg 文件中的配置。
view显示当前的配置文件内容。
init创建初始配置文件。
操作选项
参数说明
-----------------------------------------------------------
-c, --config指定配置文件的路径,默认为在优先级中找到的第一个文件。
-t, --type筛选到某个指定的插件类型。
--format指定输出格式。
--only-changed, --changed-only仅显示与默认配置不同的配置。
--disabled在所有条目前添加注释字符,以禁用它们。
使用示例
列出所有可用的配置选项:
ansible-config list

显示当前的配置设置:

ansible-config dump

显示当前的配置文件内容:

ansible-config view

创建初始配置文件:

ansible-config init

仅显示已更改的配置:

ansible-config dump --only-changed

指定配置文件路径:

ansible-config view -c /path/to/ansible.cfg

注意事项
Ansible 配置文件的优先级顺序为:环境变量 ANSIBLE_CONFIG > 当前目录的 ansible.cfg > 用户主目录的 .ansible.cfg > /etc/ansible/ansible.cfg。

7.ansible-connection常用参数

ansible-connection是 Ansible 中用于指定连接方式的一个参数。它通常用于定义 Ansible 如何与目标主机建立连接。
常用连接参数

参数说明
ansible_connection指定连接类型,如 sshwinrmlocal 等。
ansible_host目标主机的 IP 地址或主机名,如果与清单中的主机名不同。
ansible_portSSH 端口号,默认为 22。
ansible_user用于登录的默认用户名。
ansible_ssh_private_key_file指定 SSH 私钥文件路径。
ansible_passwordSSH 登录密码(不推荐,建议使用密钥认证)。
ansible_ssh_common_args为 SSH 连接指定通用参数,例如通过跳板机连接时使用。
示例:
在命令行中指定连接类型
ansible -i inventory.ini -m ping all -c ssh

-c 指定使用ssh连接。
在清单文件中指定连接参数

[webservers]
web1 ansible_host=192.168.1.10 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa
web2 ansible_host=192.168.1.11 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa

ansible_host 指定目标主机的实际 IP 地址。
ansible_user 指定用于连接的用户名。
ansible_ssh_private_key_file 指定私钥文件路径。

在 Playbook 中指定连接参数

- hosts: webservers
  remote_user: ubuntu
  connection: ssh
  tasks:
    - name: 验证系统信息
      command: uname -a

remote_user 指定远程主机的用户名。
connection 指定连接类型。

8.ansible-console命令常用参数

ansible-console 是 Ansible 提供的一个交互式命令行工具,用于执行 Ansible 任务和模块。

参数说明
-h, --help显示帮助信息并退出。
-v, --verbose增加输出的详细程度,可多次指定以提高详细级别。
-i INVENTORY, --inventory INVENTORY指定库存主机路径或逗号分隔的主机列表,默认为 /etc/ansible/hosts
-l SUBSET, --limit SUBSET进一步限制所选主机为附加的模式。
-u REMOTE_USER, --user REMOTE_USER以该用户身份连接,默认为 None
-k, --ask-pass询问连接密码。
-K, --ask-become-pass请求权限提升密码。
--become-method BECOME_METHOD要使用的权限提升方法,默认为 sudo
--become-user BECOME_USER以此用户身份运行操作,默认为 root
-c CONNECTION, --connection CONNECTION要使用的连接类型,默认为 ssh
--private-key PRIVATE_KEY_FILE, --key-file PRIVATE_KEY_FILE使用此文件来验证连接。
--ssh-common-args SSH_COMMON_ARGS指定传递给 sftp/scp/ssh 的通用参数。
--step一次一步:在运行每个任务之前确认。
--syntax-check检查 Playbook 中的语法书写。
--vault-id VAULT_IDS指定 Vault 身份。
--vault-password-file指定 Vault 密码文件。
--list-hosts输出匹配主机的列表,不执行任何其他操作。
--playbook-dir BASEDIR指定替代的 playbook 目录。
-M MODULE_PATH, --module-path MODULE_PATH指定模块路径。
-f FORKS, --forks FORKS指定并行任务数,默认为 5。
-C, --check不进行任何更改;而是尝试预测可能发生的一些更改。
-D, --diff在更改文件时,显示这些文件中的差异。

示例:
启动 ansible-console 并连接到特定主机:

ansible-console -i inventory.ini -u ansible_user -k

-i inventory.ini:指定库存文件。
-u ansible_user:指定连接用户。
-k:提示输入连接密码。
使用 --become 提权:

ansible-console --become --become-user root

–become:激活权限提升。
–become-user root:以 root 用户身份运行操作。
使用 --check 模拟执行:

ansible-console -C

-C:模拟执行,不会真正在机器上执行。

9.ansible-inventory命令常用参数

用于管理和查询 Ansible 的库存(Inventory)信息。它可以帮助用户查看、解析和操作库存文件或脚本。

参数说明
-h, --help显示帮助信息并退出。
--list列出所有主机和组的详细信息。
--graph以图形化方式显示库存结构。
--host <hostname>显示指定主机的变量信息。
--vars显示主机和组的变量信息。
-i, --inventory <inventory>指定库存文件或路径,默认为 /etc/ansible/hosts
-y, --yaml以 YAML 格式输出结果。
--export将变量导出为可移植格式。
--playbook-dir <playbook_dir>指定 playbook 目录路径。
--vault-id <vault_ids>指定 Vault 身份。
--vault-password-file <vault_password_file>指定 Vault 密码文件。

示例:
列出所有主机和组的详细信息:

ansible-inventory --list

以图形化方式显示库存结构:

ansible-inventory --graph
#结果
@all:
  |--@ungrouped:
  |--@webservers:
  |  |--web1.example.com
  |  |--web2.example.com
  |--@dbservers:
     |--db1.example.com
     |--db2.example.com

显示指定主机的变量信息:

ansible-inventory --host web1.example.com

这将显示 web1.example.com 主机的变量信息。

显示主机和组的变量信息:

ansible-inventory --vars

指定库存文件路径:

ansible-inventory -i /path/to/your/inventory --list

使用 -i 参数指定自定义库存文件路径。

以 YAML 格式输出结果:

ansible-inventory --list -y

导出变量为可移植格式:

ansible-inventory --list --export

10.ansible-vault命令常用参数

ansible-vault 是 Ansible 用于管理加密文件和变量的工具,确保敏感信息(如密码、密钥等)的安全性

参数说明
-h, --help显示帮助信息并退出。
--version显示程序的版本号并退出。
-v, --verbose增加输出的详细程度,可多次指定以提高详细级别。
--vault-id指定使用的 Vault 身份。
--vault-password-file指定包含 Vault 密码的文件路径。
--ask-vault-pass在命令行中提示输入 Vault 密码。
--output指定输出文件路径。
--encrypt-vault-id指定用于加密的 Vault 身份。
--decrypt-vault-id指定用于解密的 Vault 身份。

常用操作
1.创建加密文件

ansible-vault create <file>
ansible-vault create secrets.yml

创建一个加密文件,并提示输入密码。

2.编辑加密文件

ansible-vault edit <file>
ansible-vault edit secrets.yml

3.查看加密文件内容

ansible-vault view <file>
ansible-vault view secrets.yml

4.加密文件

ansible-vault encrypt <file>
ansible-vault encrypt secrets.yml

5.解密文件

ansible-vault decrypt <file>
ansible-vault decrypt secrets.yml

6.重新加密文件

ansible-vault rekey <file>
ansible-vault rekey secrets.yml

7.加密字符串

ansible-vault encrypt_string <string>
ansible-vault encrypt_string 'mysecretpassword'

8.解密字符串

ansible-vault decrypt_string <string>
ansible-vault decrypt_string 'encrypted_string'

11.Ansible 常用 Ad-Hoc 命令示例

1.检查主机连通性

# 检查所有主机的 SSH 连通性
ansible all -m ping

# 指定库存文件并检查特定组(如 webservers)
ansible webservers -i hosts.cfg -m ping

2.执行命令

# 在所有主机上执行简单命令(如查看时间)
ansible all -m command -a "date"

# 在 webservers 组执行复杂 Shell 命令(如查看系统运行时间)
ansible webservers -m shell -a "uptime"

3.管理软件包

# 使用 apt 安装软件包(如安装 nginx)
ansible dbservers -m apt -a "name=nginx state=present"

# 使用 yum 卸载软件包(如移除 httpd)
ansible webservers -m yum -a "name=httpd state=absent"

# 更新所有软件包(Ubuntu)
ansible all -m apt -a "update_cache=yes upgrade=dist"

4.文件操作

# 复制本地文件到远程主机
ansible all -m copy -a "src=/local/path/file.txt dest=/remote/path/file.txt mode=0644"

# 创建目录
ansible webservers -m file -a "path=/tmp/testdir state=directory"

# 修改文件权限
ansible all -m file -a "path=/etc/nginx/nginx.conf owner=root group=root mode=0644"

5.服务管理

# 启动服务(如启动 nginx)
ansible webservers -m service -a "name=nginx state=started"

# 重启服务并启用开机自启
ansible webservers -m service -a "name=nginx state=restarted enabled=yes"

# 停止服务
ansible webservers -m service -a "name=nginx state=stopped"

6.用户管理

# 创建用户并指定家目录
ansible all -m user -a "name=john state=present home=/home/john"

# 删除用户并移除家目录
ansible all -m user -a "name=john state=absent remove=yes"

7.收集主机信息(Facts)

# 显示所有主机的详细系统信息
ansible all -m setup

# 过滤特定信息(如查看 IP 地址)
ansible webservers -m setup -a "filter=*ipv4*"

8.高级选项

# 指定用户并提权(如使用 sudo)
ansible all -u admin -b -m apt -a "name=curl state=present"

# 限制执行的主机(仅针对 web1.example.com)
ansible webservers --limit "web1.example.com" -m command -a "reboot"

# 批量执行脚本(需提前上传脚本到目标主机)
ansible all -m script -a "/path/to/local/script.sh"

如何查看完整参数列表?

命令行工具参数:

ansible --help          # 查看 ansible 命令参数
ansible-playbook --help # 查看 ansible-playbook 参数
ansible-galaxy --help   # 查看 ansible-galaxy 参数

配置参数:

参考官方文档:Ansible Configuration Settings

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值