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"

标签: Ansible

添加新评论