ansible playbook

playbook基本使用

相当于把模块写入到配置文件里面,例:

[root@geenk03 ~]# cat /etc/ansible/test.yml
---
- hosts: 192.168.1.204
  remote_user: root
  tasks:
    - name: test_playbook
      shell: touch /tmp/huansheng.txt

结果;在192.168.1.204上的tmp目录下创建一个huansheng.txt文件
说明: 第一行需要有三个杠,hosts参数指定了对哪些主机进行参作,如果是多台机器可以用逗号作为分隔,也可以使用主机组,在/etc/ansible/hosts里定义;
user参数指定了使用什么用户登录远程主机操作;
tasks指定了一个任务,其下面的name参数同样是对任务的描述,在执行过程中会打印出来,shell是ansible模块名字
执行:ansible-playbook /etc/ansible/test.yml

playbook中的变量使用

创建一个test用户

[root@geenk03 ~]# cat /etc/ansible/test_user.yml
---
- name: create_user
  hosts: 192.168.1.204
  user: root
#  能让gather_facts在前台不显示,可以减轻ansible压力
  gather_facts: false
  vars:
#声明变量
    - user: "test"
  tasks:
    - name: create_user
#{{ user}} 相当于shell中的$
      user: name="{{ user }}"

结果:在192.168.1.204上创建一个test用户
说明:name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值 ,可以省略;gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到;vars参数,指定了变量,这里指字一个user变量,其值为test ,需要注意的是,变量值一定要用引号引住;user提定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。

playbook循环

[root@geenk03 ~]# cat /etc/ansible/test_while.yml
---
- hosts: 192.168.1.204
  user: root
  tasks:
    - name: change mode for files
#{{ itme}} 可以理解为$item
      file: path=/tmp/{{ item }} state=touch mode=600
#定义items变量
      with_items:
        - 1.txt
        - 2.txt
        - 3.txt

结果:在192.168.1.204上创建3个txt,并且授权为600
说明: with_items为循环的对象

Ansible playbook中的条件判断

[root@geenk03 ~]# cat /etc/ansible/when.yml
---
- hosts: testhost
  user: root
  gather_facts: True
  tasks:
    - name: use when
      shell: touch /tmp/when.txt
#如果ip为192.168.1.204就创建文件
      when: ansible_eth0.ipv4.address == "192.168.1.204"

结果:在192.168.1.204上创建了讴歌when.txt, 192.168.1.203上,没有创建
说明:ansible 192.168.1.204 -m setup 可以查看到所有的facter信息

playbook中的handlers

handlers 类似于shell中的 &&,前面执行成功了才会执行后面的

cat /etc/ansible/handlers.yml
---
- name: handlers test
  hosts: 192.168.1.204
  user: root
  tasks:
    - name: copy file
      copy: src=/etc/passwd dest=/tmp/aaa.txt
#定义hangdler名字,让下面的hangler模块调用
      notify: test handlers
  handlers:
    - name: test handlers
      shell: echo "11111" >> /tmp/aaa.txt

结果:在192.168.1.204上拷贝了passwd文件,名为aaa.txt,并追加内容“11111”
说明:只有copy模块真正执行后,才会去调用下面的handlers相关的操作。反正则不会, 这种比较操作适合配置文件发生更改后,重启服务的操作。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值