ansible-playbook详解

学习目标:

可以简单的编写playbook
学习视频链接:https://www.bilibili.com/video/BV18t411f7CN?p=5

学习内容:

ansible-playbook

ansible-vault
功能:管理加密解密yml文件
在这里插入图片描述
ansible-console
功能:可交互执行命令,支持tab
在这里插入图片描述
playbook

  1. playbook是由一个或多个play组成的列表
  2. play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上讲,所谓task无非是调用ansible的一个module。将多个play组织在一个playbook中,既可以让他们联同起来按事先编排的机制同唱一台戏
  3. playbook采用yaml语言

playbook调用流程
在这里插入图片描述
yaml语言简介
在这里插入图片描述

  1. list:列表,其所有元素均使用 - 打头
  2. dictionary:字典,通常由多个key与value构成
[root@zabbix_server ansible]# cat hello.yaml 
---
 1. hosts: LYP
  remote_user: root

  tasks:
 2. name: hello
     command: hostname

playbook核心元素
在这里插入图片描述
3. hosts
在这里插入图片描述

  1. remote_user
    在这里插入图片描述

  2. task列表和action
    在这里插入图片描述

  3. task任务列表
    在这里插入图片描述
    在这里插入图片描述
    运行playbook
    在这里插入图片描述
    playbook与shellscripts对比
    在这里插入图片描述
    样例

[root@zabbix_server ansible]# cat file.yaml 
---
- hosts: LYP
  remote_user: root

  tasks:
    - name: create file
      file: name=/home/myscripts/newfile state=touch
    - name: create user
      user: name=test2 system=yes shell=/sbin/nologin
    - name: install package
      yum: name=httpd
    - name: copy html
      copy: src=/home/test1.html dest=/var/www/html/
    - name: start service
      service: name=httpd state=started enabled=yes
[root@zabbix_server ansible]# ansible-playbook  file.yaml 

PLAY [LYP] **************************************************************************************************************************************************************************************************

TASK [Gathering Facts] **************************************************************************************************************************************************************************************
ok: [172.28.102.130]
ok: [172.28.102.131]

TASK [create file] ******************************************************************************************************************************************************************************************
changed: [172.28.102.130]
changed: [172.28.102.131]

TASK [create user] ******************************************************************************************************************************************************************************************
changed: [172.28.102.130]
changed: [172.28.102.131]

TASK [install package] **************************************************************************************************************************************************************************************
changed: [172.28.102.130]
changed: [172.28.102.131]

TASK [copy html] ********************************************************************************************************************************************************************************************
changed: [172.28.102.130]
changed: [172.28.102.131]

TASK [start service] ****************************************************************************************************************************************************************************************
changed: [172.28.102.130]
changed: [172.28.102.131]

PLAY RECAP **************************************************************************************************************************************************************************************************
172.28.102.130             : ok=6    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.28.102.131             : ok=6    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

handlers和notify结合使用触发条件

  • handlers:是task列表,这些task与前述的task并没有本质的区别,用于关注的资源发生变化时,才会采取一定的操作

  • notify此action可用于在每个play的最后被触发,这样可避免多次有改变发生时每次都执行指定的操作,仅在所有的变化发生完成后一次性的执行指定的操作。在notify中列出的操作称为handler,也即notify中调用handler中定义的操作
    在这里插入图片描述
    注意:触发多个的时候,notify后面跟的是列表的形式

[root@zabbix_server ansible]# cat httpd.yml 
---
- hosts: LYP
  remote_user: root

  tasks:
   - name: install httpd package
     yum: name=httpd
     tags: httpd
   - name: copy config file
     copy: src=httpd.conf dest=/etc/httpd/conf/ backup=yes
     notify: restart service
   - name: start service
     service: name=httpd state=started enabled=yes
     tags: httpd

  handlers:
   - name: restart service
     service: name=httpd state=restarted
[root@zabbix_server ansible]# ansible-playbook  httpd.yml --list-tags

playbook: httpd.yml

  play #1 (LYP): LYP    TAGS: []
      TASK TAGS: [httpd]
[root@zabbix_server ansible]# ansible-playbook  httpd.yml --list-host

playbook: httpd.yml

  play #1 (LYP): LYP    TAGS: []
    pattern: [u'LYP']
    hosts (2):
      172.28.102.131
      172.28.102.130

学习产出:

可以单独的写playbook

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值