ansible-playbook 命令行工具
ansible-playbook
运行Ansible playbook的工具,这是一个配置和多节点部署系统。有关更多信息,请参阅项目主页 ( https://docs.ansible.com )。
环境变量
可以指定以下环境变量。
ANSIBLE_INVENTORY – 覆盖默认的ansible清单文件
ANSIBLE_LIBRARY – 覆盖默认的ansible模块库路径
ANSIBLE_CONFIG - 覆盖默认的 ansible 配置文件
示例
ANSIBLE_CONFIG=~/k8s-test/ansible.cfg ansible-playbook -i ~/k8s-test/hosts_bjdlyy_k3s playbooks/001.init.yaml通过添加-v,可以查看当前使用的ansible.cfg
ANSIBLE_CONFIG=~/k8s-test/ansible.cfg ansible-playbook -i ~/k8s-test/hosts_bjdlyy_k3s playbooks/001.init.yaml -v配置文件
ansible.cfg 中的大多数选项都有更多可用的选项
文件
/etc/ansible/hosts – 默认库存文件
/etc/ansible/ansible.cfg – 配置文件,如果存在则使用
~/.ansible.cfg- 用户配置文件,覆盖默认配置(如果存在)
常用选项
--ask-su-pass
询问 su 密码(已弃用,使用成为)
--ask-sudo-pass
询问 sudo 密码(已弃用,使用成为)
--ask-vault-pass
询问保险库密码
--become-method <BECOME_METHOD>
要使用的权限提升方法(默认 = sudo),有效选择:[ sudo | 苏 | pbrun | 执行程序 | 做| dzdo | 克苏 | 鲁纳斯 | 下午运行 | 启用 | 机器控制]
--become-user <BECOME_USER>
以该用户身份运行操作(默认=root)
--flush-cache
清除清单中每个主机的事实缓存
--force-handlers
即使任务失败也运行处理程序
--list-hosts
输出匹配主机列表;不执行任何其他操作
--list-tags
列出所有可用的标签
--list-tasks
列出所有将要执行的任务
--private-key, --key-file
使用此文件来验证连接
--scp-extra-args <SCP_EXTRA_ARGS>
指定仅传递给 scp 的额外参数(例如 -l)
--sftp-extra-args <SFTP_EXTRA_ARGS>
指定仅传递给 sftp 的额外参数(例如 -f、-l)
--skip-tags
只运行标签与这些值不匹配的播放和任务
--ssh-common-args <SSH_COMMON_ARGS>
指定要传递给 sftp/scp/ssh 的常用参数(例如 ProxyCommand)
--ssh-extra-args <SSH_EXTRA_ARGS>
指定仅传递给 ssh 的额外参数(例如 -R)
--start-at-task <START_AT_TASK>
在匹配此名称的任务处启动剧本
--step
一步一步:在运行前确认每个任务
--syntax-check
对 playbook 执行语法检查,但不要执行它
--vault-id
要使用的保管库标识
--vault-password-file
保险库密码文件
--version
显示程序的版本号并退出
-C, --check
不要做任何改变;相反,尝试预测可能发生的一些变化
-D, --diff
更改(小)文件和模板时,显示这些文件中的差异;与 –check 配合使用效果很好
-K, --ask-become-pass
要求提权密码
-M, --module-path
将冒号分隔的路径添加到模块库(默认=['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'])
-R <SU_USER>, --su-user <SU_USER>
以该用户身份使用 su 运行操作(默认 = 无)(已弃用,使用成为)
-S, --su
使用 su 运行操作(已弃用,使用 become)
-T <TIMEOUT>, --timeout <TIMEOUT>
以秒为单位覆盖连接超时(默认值 = 10)
-U <SUDO_USER>, --sudo-user <SUDO_USER>
所需的 sudo 用户(默认=root)(已弃用,使用成为)
-b, --become
使用 become 运行操作(不暗示密码提示)
-c <CONNECTION>, --connection <CONNECTION>
要使用的连接类型(默认=智能)
-e, --extra-vars
如果文件名以 @ 开头,则将其他变量设置为 key=value 或 YAML/JSON
-f <FORKS>, --forks <FORKS>
指定要使用的并行进程数(默认值=5)
-h, --help
显示此帮助信息并退出
-i, --inventory, --inventory-file
指定清单主机路径或逗号分隔的主机列表。--inventory-file 已弃用
-k, --ask-pass
询问连接密码
-l <SUBSET>, --limit <SUBSET>
进一步将选定主机限制为其他模式
-s, --sudo
使用 sudo (nopasswd) 运行操作(已弃用,使用 become)
-t, --tags
只运行带有这些值标记的播放和任务
-u <REMOTE_USER>, --user <REMOTE_USER>
以此用户身份连接(默认=无)
-v, --verbose
详细模式(-vvv 更多,-vvvv 启用连接调试)
实例
调整并发数
# 若希望单个执行,则可以将并发数量调整为1,默认5个
ansible-playbook -i hosts_postgres_cold_standby rsync_postgres_cold_standby.yml -f 1
# 若希望提高执行速度,可以通过增加并发数来实现
ansible-playbook -i hosts_postgres_cold_standby rsync_postgres_cold_standby.yml -f 100根据剧本中添加的tags,选择跳过
# 跳过磁盘检查tag
ansible-playbook -i hosts_bjcyyy ../devops/Autoinstall/common.yml --skip-tags="check_disk"同时定义多个变量
# 同时定义多个变量
ansible-playbook -e "var1=value1,var2=value2" your_playbook.yml
ansible-playbook -e "var1=value1" -e "var2=value2" your_playbook.yml
ansible-playbook -v -i hosts /var/lib/jenkins/devops/deploy.yml -e "devops_job_dir='${devops_job_dir}' build_dir='${build_dir}' env_name='${env_name}' job_name='${job_name}' build_num='${build_num}' node_name='${NODE_NAME}' git_url='${GIT_URL}' git_branch='${GIT_BRANCH}' git_commit='${GIT_COMMIT}' jenkins_job_url='${BUILD_URL}'"
ansible-playbook test.yaml -e server_address="192.168.1.220:8080" -e nginx_host="LOCAL-SYNC-001" -e his_name="220-test" -e safe_agent_host="LOCAL-APP-002" -e internal_port="8081"