企业网站设计html代码,时尚网站设计案例,wordpress启用memcahe,wordpress cenos一、playbook
1、简介 Playbook 剧本是由一个或多个play组成的列表。
play的主要功能在于将预定义的一组主机#xff0c;装扮成事先通过ansible中的task定义好的角色。
Task实际是调用ansible的一个module#xff0c;将多个play组织在一个playbook中#xff0c;即可以让它…
一、playbook
1、简介 Playbook 剧本是由一个或多个play组成的列表。
play的主要功能在于将预定义的一组主机装扮成事先通过ansible中的task定义好的角色。
Task实际是调用ansible的一个module将多个play组织在一个playbook中即可以让它们联合起来按事先编排的机制执行预定义的动作
Playbook 文件是采用YAML语言编写的。
2、playbook组成部分
1、tasks任务包含要在目标主机上执行的操作使用模块定义这些操作。每个任务都是一个模块的调用。
2、variables变量存储和传递数据和shell脚本中的变量是一个意思可以在playbook当中定义为全局变量也可以在外部传参。
3、templates模版主要用于生成配置文件。模版是包含占位符的文件。占位符由ansible在执行时转化为变量值
4、handlers处理器当需要有变更的时候可以执行触发器
5、roles角色类似于docker-compose是一种组织和封装playbook的。允许把相关的任务变量和模版和处理器组织成一个可复用的单元 3、如何编写Playbook
xxx.yaml/xxx.yml
--- #表示开始
- name: #指定play的名称hosts: #指定主机清单中定义的主机组名remote_user: #指定远程主机的执行用户grather_facts: ture|fales #指定是否要收集远程主机的facts信息vars: #自定义变量只能在当前play有效- 变量1: 值1 #格式为key: value- 变量2: 值2tasks: #定义任务列表,默认从上往下依次执行- name: #定义任务的名称模块名: 模块参数 ignore errors: true #忽略任务的失败- name: #可以定义多个任务模块名: 模块参数 notify: 任务名 #如以上操作后为changed的状态时会通过notify指定的名称触发对应名称的handlers操作##条件判断##- name:模块名: 模块参数when: #定义条件表达式( ! )条件成立时执行此task任务否则不执行任务##循环##- name:模块名: 模块参数{{item}}with_items: #定义循环列表##tags模块标签## - name: 模块名: 模块参数 tags:- 标签1- 标签2handlers: - name: 任务名 #和notify中的任务名相同模块名: 模块参数#无注释版
---
- name: hosts: remote_user:grather_facts: ture|fales vars:- 变量1: 值1- 变量2: 值2tasks:- name:模块名: 模块参数 ignore errors: true- name:模块名:notify: 任务名- name:模块名:when:- name:模块名: 模块参数{{item}}with_items:handlers: - name: 任务名模块名: 模块参数4、语句的横向/纵向写法
task任务的模块语法格式
横向格式
模块名: 参数1值 参数2{{变量名}} ...纵向格式
模块名:参数1: 值参数2: {{变量名}}...with_items 和 vars 的语法格式
横向格式
with_items: [值1, 值2, 值3, ...]值为对象(键值对字段)时
with_items:
- {key1: 值1, key2: 值2}
- {key1: 值3, key2: 值4}
...纵向格式
with_items:
- 值1
- 值2
- 值3
...值为对象(键值对字段)时
with_items:
- key1: 值1key2: 值2
- key1: 值3key2: 值4
... 二、playbook模版实例
1、playbook模版 ansible-playbook test1.yml
执行脚本ansible-playbook test1.yml --start-at-taskinstall httpd
从指定任务模块开始执行ansible-playbook test1.yml --syntax-check
检查yml文件的语法是否正确ansible-playbook test1.yml --list-task
检查有多少tasks任务ansible-playbook test1.yml --list-hosts
检查在哪台主机生效 若要切换用户比如从koeda切换到root用户 71行要取消注释 hosts中 改过用户运行时的命令
ansible-playbook test1.yml -K(大K)
-K输入密码 若脚本中没有指定用户可以命令指定
ansible-playbook test1.yml -u root -k(小k) 模版实例2
#this is second
#声明和引用变量以及外部传参
- hosts: 192.168.10.201remote_user: rootvars:groupname: guoqiusername: wangdefutasks:- name: create groupgroup:name: {{ groupname }}system: yesgid: 111- name: create useruser:name: {{ username }}uid: 1011group: {{ groupname }}shell: /sbin/nologin- name: copy filecopy:content: {{ hostvars[inventory_hostname][ansible_default_ipv4][address]}}dest: /opt/ky32.txt
#获取目标的ip地址然后复制到目标文件 vars:groupname: koedausername: koeda
字典方式key-value
{{ hostvars[inventory_hostname][ansible_default_ipv4][address]}}
包含所有主机变量的字典
inventory_hostname目标主机的主机名
ansible_default_ipv4获取目标主机的IP地址 也可以里面不指定变量参数外部传参 ansible-playbook test2.yaml -e usernamekoeda groupnamekoeda 2、playbook的条件判断
when 是一个比较常见的应用场景实现满足条件即执行不满足条件即跳过的任务
when是满足条件即执行不满足不执行
- hosts: allremote_user: roottasks:- name: nginx whenyum: namenginxwhen: ansible_default_ipv4.address 20.0.0.25- name: nginx infodebug:msg: 安装nginxwhen: ansible_default_ipv4.address 20.0.0.25- name: httpd whenyum: namehttpdwhen: ansible_default_ipv4.address 20.0.0.26- name: httpd infodebug:msg: 安装httpdwhen: ansible_default_ipv4.address 20.0.0.26 3、playbook中的循环
四种循环方式
with_items 最常用的
with_list 列表分组循环
with_together 列表对应的列中以数据结合的方式循环
with_nested 相当于双层循环第一层定义了循环的次数第二层表示第一层中的每个元素会循环几次 ansible有多中循环格式
with_items 循环遍历
- hosts: 20.0.0.25remote_user: rootgather_facts: falsetasks:- debug:msg: {{ item }}with_items: [a,b,c,d] - hosts: 20.0.0.25remote_user: rootgather_facts: falsetasks:- debug:msg: {{ item }}with_items:- [a,b,c,d]- [1,2,3,4] with_list列表输出
- hosts: 20.0.0.25remote_user: rootgather_facts: falsetasks:- debug:msg: {{item}}with_list:- [a,b,c]- [1,2,3] 练习
- hosts: 20.0.0.25remote_user: rootgather_facts: falsetasks:- name: createfile:path: {{item}}state: touchwith_items:- /opt/a- /opt/b- /opt/1- /opt/2 with_together组合输出
组循环列表中的值一一对应打印出来
- hosts: 20.0.0.25remote_user: rootgather_facts: falsetasks:- debug:msg: {{item}}with_together:- [a,b,c]- [1,2,3]- [A,B] 循环嵌套
- hosts: 20.0.0.25remote_user: rootgather_facts: falsetasks:- debug:msg: {{item}}with_nested:- [a,b,c]- [1,2,3]