最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 服务器 > 系统运维 >
playbook的基本使用你都知道吗?
linuxe发表于 2020-10-16 15:07 次浏览
PlayBook是由开发 黑莓手机的加拿大通讯公司Research In Motion(RIM)在2010年9月27日发布的一款平板电脑。RIM公司希望在10月份将此设备发放给企业用户和开发商,在2011年初开始向消费者发售。同时发布的是一款基于QNX Neutrino的全新操作系统,BlackBerry Tablet OS。该系统将运行于BlackBerry PlayBook。

一、Ansible playbook的构成

Inventory:主机列表,表示剧本中的任务要应用在哪些主机上

Tasks:具体任务,即调用哪些模块完成操作,可以配置多个任务

Variables:变量,包含内置变量和自定义变量

Templates:模板,即使用模板语法来灵活变更的配置文件

Handlers与notify:触发器,由某事件触发执行的操作,比如修改配置文件后自动重启服务

 

二、Playbook的语法要求

1、playbook本质是包含了一个或多个play的YAML配置文件,通常以.yaml或者.yml结尾

2、在单一的一个playbook文件中,使用连续的三个中横线(---)作为每个play的区分

3、缩进必须统一,不能空格和tab混合使用,缩进级别需要一致,同样的缩进代表同样的级别

 

三、Ansible playbook示例说明

 

01 cat playbook01.yml
02 ---                       #固定格式
03 - hosts: 192.168.1.31     #定义需要执行的主机或主机组
04   remote_user: root       #远程用户
05   vars:                   #定义变量
06     http_port: 8088       #变量
07   tasks:                  #定义一个任务
08     - name: create new file          #定义任务的名称
09       file: name=/tmp/playtest.txt state=touch   #调用模块,具体要做的事情
10     - name: install package
11       yum: name=httpd
12     - name: config httpd
13       template: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf
14       notify:   #触发器,当条件触发后需要做的操作,配合handlers使用
15         - restart apache  #需要引用的handlers的名字
16     - name: copy index.html
17       copy: src=/var/www/html/index.html dest=/var/www/html/index.html
18     - name: start httpd
19       service: name=httpd state=started
20   handlers:   #notify定义的触发执行相应的处理动作
21     - name: restart apache                     #要与notify定义的内容相同
22       service: name=httpd state=restarted      #触发要执行的动作

hosts:指定远程主机(多个主机用逗号分隔)或主机组

 

remote_user:指定执行任务的用户(也可单独给每个task定义),通常是root用户,也可指定非root用户使用sudo方式执行任务

1 ---
2 - hosts: 192.168.1.31
3   remote_user: root  #定义全局用户

1 tasks:
2   - name: run df -h
3     remote_user: test  #单独为task定义用户
4     shell: name=df -h

 

sudo(可省略):如果设置为yes,那么sudo_user指定的用户在执行任务时会获得root权限

sudo_user(可省略):指定需要使用sudo执行操作的用户

1 tasks:
2   - name: run df -h
3     sudo_user: test
4     sudo: yes
5     shell: name=df -h

 

connection(可省略):通过什么方式连接到远程主机,默认为SSH    

gather_facts(可省略):如果明确不需要通过setup模块来获取远程主机facts信息,可以使用这个选项

 

四、运行Ansible playbook

 

ansible-playbook命令示例与常用选项:

01 ansible-playbook -t tag_name httpd.yml #-t指定标签名,多个标签用逗号分隔
02 ansible-playbook playbookname.yml --list-task #列出该playbook中的任务
03  
04 # --check | -C:只检测可能会发生的改变,但不真正执行操作
05 # --list-hosts:列出运行任务的主机
06 # --list-tags:列出playbook文件中定义的所有tags
07 # --list-tasks:列出playbook文件中定义的所有任务
08 # --limit:主机列表 只针对主机列表中的某个主机或者某个组执行
09 # -f:指定并发数,默认为5个
10 # -t:指定tags运行,运行某一个或者多个tags。前提是playbook中有定义tags

 

ansible-playbook命令结果说明:

ok:已经达到任务要求,无需再次处理

changed:经过了ansible的处理,再次执行则会发现这些信息也变成了ok

PLAY RECAP:一个汇总报告

 

五、使用ansible-vault加密Playbook

 

1 ansible-vault encrypt hello.yml  #加密playbook,加密否的文件无法直接执行和查看
2 ansible-vault view hello.yml  #查看加密后的文件
3 ansible-vault edit hello.yml  #查看加密后的文件
4 ansible-vault decrypt hello.yml  #解密playbook
 

标签:playbook软件
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐
2020-10-15 15:34:24 关键词:playbook软件
摘要:Ansible是一个系列文章,我会尽量以通俗易懂、诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些。下面这篇文章我们就来谈谈playbook的变量定义与调用。 一、An..