ansible playbook相关
Posted tmdhhl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible playbook相关相关的知识,希望对你有一定的参考价值。
playbook(剧本)
格式
playbook的编写应遵循yaml格式的语法
列表 -
字典 k:v
后缀名为 .yaml 或 .yml
# 简单示例
- hosts: web # 主机ip/分组名
remote_user: root # 用户身份
tasks:
- name: installlxml # 任务名
pip: name=lxml # 使用的模块: 参数
# 注: 执行时使用ansible-playbook xx.yml
传参
# 1. 直接给playbook传参
- hosts: web
remote_user: root
tasks:
- name: installl module_name
pip: name= module_name
# 2. 在playbook中以vars方式传参
- hosts: web
remote_user: root
vars:
- module_name: requests
tasks:
- name: installl module_name
pip: name= module_name
# 注: 执行时使用ansible-playbook -e module_name xx.yml
# 3. 在/etc/ansible/hosts 文件中传参
[web]
192.168.80.128 module_name=requests
192.168.80.129 module_name=flask
# 注: 执行时使用ansible-playbook xx.yml
# 4. 在/etc/ansible/hosts 文件中以[分组名:vars]方式传参
[web]
192.168.80.128
192.168.80.129
[web:vars]
module_name=requests
# 5. 利用上次任务的结果传值
- hosts: web
remote_user: root
tasks:
- name: sum
shell: echo 2+2|bc
register: user
- name: create user
user: name=nihao user.stdout
# 注: 执行时使用ansible-playbook xx.yml
# 需要先进行 yum -y install bc 操作
# 五种传参方式的优先级
-e > vars > hosts
标签
# 只执行playbook中部分内容
- hosts: web # 主机ip/分组名
remote_user: root # 用户身份 tasks:
tasks:
- name: installlxml # 任务名
pip: name=lxml # 使用的模块: 参数
tags: 标签名
# 注: 执行时使用ansible-playbook -t 标签名 xx.yml
模板
- hosts: web
remote_user: root
tasks:
- name: install
yum: name=reids
tags: install
- name: copyfile
template: src=redis.conf.j2 dest=/etc/redis.conf
tags: copyfile
- name: startredis
service: name=redis state=started
tags: start
# 注:redis.conf.j2文件是一个包含jinja2语法的redis.conf文件,通过配合template完成根据主机ip, 动态设置redis.conf中bind ip
# redis.conf.j2
bind ansible_default_ipv4.address
条件判断
- hosts: web # 主机ip/分组名
remote_user: root # 用户身份 tasks:
tasks:
- name: installlxml # 任务名
pip: name=lxml # 使用的模块: 参数
when: num==1 # 条件判断,因为when语法原因不需要写成 num == 1
# 注: 执行时使用ansible-playbook xx.yml
循环
# 循环创建nihao, hello, hah三个用户
- hosts: web # 主机ip/分组名
remote_user: root # 用户身份 tasks:
tasks:
- name: createUser # 任务名
user: name= item
with_items:
- nihao
- hello
- hah
# 注: 执行时使用ansible-playbook xx.yml
# 创建用户并指定组
- hosts: web # 主机ip/分组名
remote_user: root # 用户身份 tasks:
tasks:
- name: creategroup
group: name= item.group
- name: createUser # 任务名
user: name= item.name group= item.group
with_items:
- name: nihao, group: niao
- name: hello, group: hello
- name: hah, group: hah
handler
- hosts: cache
remote_user: root
tasks:
- name: install
yum: name=redis
tags: install
- name: copyfile
template: dest=/etc/redis.conf src=redis.conf.j2
tags: copyfile
notify: restart redis # 此任务执行完后,执行handler
- name: startredis
service: name=redis state=started
tags: start
handlers:
- name: restart redis
service: name=redis state=restarted
以上是关于ansible playbook相关的主要内容,如果未能解决你的问题,请参考以下文章