学习目标:
可以简单的编写playbook
学习视频链接:https://www.bilibili.com/video/BV18t411f7CN?p=5
学习内容:
ansible-playbook
ansible-vault
功能:管理加密解密yml文件
ansible-console
功能:可交互执行命令,支持tab
playbook
- playbook是由一个或多个play组成的列表
- play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上讲,所谓task无非是调用ansible的一个module。将多个play组织在一个playbook中,既可以让他们联同起来按事先编排的机制同唱一台戏
- playbook采用yaml语言
playbook调用流程
yaml语言简介
- list:列表,其所有元素均使用 - 打头
- 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
-
remote_user
-
task列表和action
-
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