Ansible playbook入门

在playbook中有严格的缩进要求,不能空格和tab同时使用,不同的缩进代表不同的级别,所以相同级别时必须要有相同的缩进。

且每个playbook习惯上以"---"开头。

playbook默认以root账户对远程主机执行操作。

编写一个简单的playbook:

[root@localhost ansible]# cat test.yml
---
- hosts: wyh-test
  remote_user: root

  tasks:
    - name: create new directory
      file: name=/usr/local/wyh state=directory
    - name: create new file
      file: name=/usr/local/wyh/test0905.txt state=touch
    - name: install package
      yum: name=httpd
    - name: copy html
      copy: src=/var/www/html/index.html dest=/var/www/html
    - name: start service
      service: name=httpd state=started enabled=yes

编写好playbook之后可以先使用-C(check)参数来对yml文件进行检查。

[root@localhost ansible]# ansible-playbook -C test.yml

执行:

[root@localhost ansible]# ansible-playbook test.yml

执行成功之后我们可以使用命令来验证一下上述的任务是否真的执行了:

#查看80端口是否启动
[root@localhost ansible]# ansible wyh-test -m shell -a 'ss -tln|grep :80'
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
192.168.126.129 | CHANGED | rc=0 >>
LISTEN     0      128       [::]:80                    [::]:*



#查看index.html是否可访问
[root@localhost ansible]# curl 192.168.126.129
Hello World!

playbook中变量的使用:

变量必须是由数字、字母、下划线组成,并且只能以字母开头。

[root@localhost ansible]# cat test-app.yml
---
- hosts: wyh-test
  remote_user: root

  tasks:
    - name: install package
      yum: name={{ pkname }}
    - name: start service
      service: name={{ pkname }} state=started enabled=yes


#这里我们要测试的是vsftp,它的yum包和service服务中的名成是一样的,所以我们使用了同一个变量,但是可能有些包名和服务名是不一样的,需要不同的变量名。

传参执行:

[root@localhost ansible]# ansible-playbook -e 'pkname=vsftpd' test-app.yml

可以看到21端口已经启动: 

[root@localhost ansible]# ansible wyh-test -m shell -a 'ss -tln|grep :21'
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
192.168.126.129 | CHANGED | rc=0 >>
LISTEN     0      32        [::]:21                    [::]:*

也可以传多个参数:

[root@localhost ansible]# cat test-app.yml
---
- hosts: wyh-test
  remote_user: root

  tasks:
    - name: install package
      yum: name={{ pkname1 }},{{ pkname2 }}

执行:

[root@localhost ansible]# ansible-playbook -e 'pkname1=httpd pkname2=vsftpd' test-app.yml

查看rpm包中是否安装成功:

[root@localhost ansible]# ansible wyh-test -m shell -a 'rpm -q httpd vsftpd'
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
[WARNING]: Consider using the yum, dnf or zypper module rather than running 'rpm'.  If you need to use
command because yum, dnf or zypper is insufficient you can add 'warn: false' to this command task or set
'command_warnings=False' in ansible.cfg to get rid of this message.
192.168.126.129 | CHANGED | rc=0 >>
httpd-2.4.6-97.el7.centos.x86_64
vsftpd-3.0.2-29.el7_9.x86_64

也可以直接在playbook里面定义变量:

#可以先把刚才安装好的httpd/vsftpd包删掉,然后再做测试
[root@localhost ansible]# ansible wyh-test -m shell -a 'yum -y remove httpd vsftpd'

在playbook中添加vars来指定参数: 

[root@localhost ansible]# cat test-app.yml
---
- hosts: wyh-test
  remote_user: root

  vars:
    - pkname1: httpd
    - pkname2: vsftpd

  tasks:
    - name: install package
      yum: name={{ pkname1 }},{{ pkname2 }}

 执行时就不需要指定参数了:

[root@localhost ansible]# ansible-playbook test-app.yml

执行完之后也可以再去看一下rpm中有没有安装好这两个包。

还可以在单独的一个文件中专门用来定义变量:

#先定义一个变量yml
[root@localhost ansible]# cat vars0906.yml
var1: httpd
var2: test0906
#编辑playbook:
[root@localhost ansible]# cat test-vars0906.yml
---
- hosts: wyh-test
  remote_user: root
  vars_files:
    - vars0906.yml

  tasks:
    - name: install package
      yum: name={{ var1 }}

    - name: create file
      file: path=/usr/local/wyh/{{ var2 }}.txt state=touch




#执行playbook
[root@localhost ansible]# ansible-playbook test-vars0906.yml


#验证执行结果
[root@localhost ansible]# ansible wyh-test -m shell -a 'rpm -q httpd'
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
[WARNING]: Consider using the yum, dnf or zypper module rather than running 'rpm'.  If you need to use command
because yum, dnf or zypper is insufficient you can add 'warn: false' to this command task or set
'command_warnings=False' in ansible.cfg to get rid of this message.
192.168.126.129 | CHANGED | rc=0 >>
httpd-2.4.6-97.el7.centos.x86_64
[root@localhost ansible]#
[root@localhost ansible]#
[root@localhost ansible]# ansible wyh-test -m shell -a 'ls /usr/local/wyh'
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
192.168.126.129 | CHANGED | rc=0 >>
test0906.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QYHuiiQ

听说打赏的人工资翻倍~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值