Ansible Playbook 介绍
来源:互联网 发布:excel数据分类 编辑:程序博客网 时间:2024/05/16 01:43
相关阅读 Ansible 安装配置及常用命令
Ansible Playbook 介绍
可以理解为把需要用到的 ansible 模块写入到配置文件里面,然后执行配置文件就可以完成分复杂的工作。类比在 Linux 系统下的 shell 脚本,比如 shell 安装 LANMP。
编写playbook 一
# vim /etc/ansible/test.yml
---
- hosts: testhosts
remote_user: root
tasks:
- name: test_playbook
shell: touch /tmp/lishiming.txt
playbook 文件以 yml 结尾
--- 为固定格式,不能省略,包括 host 前面的 -
hosts 指定主机的组或者ip
remote_user 指定远程执行命令的用户,也可以只写 user
tasks 指定任务,先对任务进行命名,再写要执行的命令
name 对任务进行一个描述,执行过程中会打印出来
shell 具体要执行的命令。
格式要求很严格,hosts 和 remote_user 一定要首字母对其,下面的 name 和 shell 也要整齐,减号是对下面所有的参数起作用,如果没有整齐,那么语法会有错误。下图已经用 here 指出来。
执行 playbook
# ansible-playbook test.yml
编写playbook 二
# vim /etc/ansible/creat_users.yml
---
- name: create_user
hosts: testhosts
user: root
gather_facts: false
vars:
- user: "test"
tasks:
- name: creat user
user: name="{{ user }}"
gater_facts 参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,ansible testhosts -m setup 在命令行执行 setup 模块可查看相关信息。这些信息可以作为一个判断条件,在后面的task会使用到setup获取的信息。比如判断系统是 ubuntu 还是 centos,然后选择是执行 apt-get 还是 yum。
var 指定变量,定义 user 用户变量,值为test ,需要注意的是,变量值一定要用引号引住。在 playbook 里面用两个花括号来引用变量,需要有空格 {{ 变量 }}。
tasks 指定任务,
- name 定义任务的描述,
user 调用 user 模块
用ansible-doc user 查看命令帮助选项。= name Name of the user to create, remove or modify.
playbook 中的循环
playbook 类似 shell ,支持循环以及判断等特殊格式。
需求针对 file 文件,修改 /tmp 目录下 1.txt 2.txt 的权限,owner 以及 group。做个遍历循环,核心是 item 以及下面的 with_item 选项,为 ansible 的固定结构。
# vim /etc/ansible/loop.yml
---
- hosts: testhosts
user: root
tasks:
- name: change mod for file
file: path=/tmp/{{ item }} mode=600 owner=test group=root
with_items:
- 1.txt
- 2.txt
file 后面的 user 和 group 可以不用写,上面已经定义了 user
with_item 下面的 1.txt 和 2.txt 后面千万不能跟空格,空格也会被识别为文件的一部分。
核心部分就是 {{ item }} 以及下面的 with_items:
playbook 中的判断
playbook 类似 shell ,支持循环以及判断等特殊格式。
判断的关键选项 when
# vim /etc/ansible/when.yml
---
- hosts: testhosts
remote_user: root
gather_facts: True
tasks:
- name: use when
shell: touch /tmp/when.txt
when: facter_ipaddress == "192.168.32.150"
gather_facts 这里用到的信息是来判断 ip 地址是不是 192.168.32.150
when 就是执行条件,facter_ipaddress 就是通过 gather_facts 得到的信息,ansible testhosts -m setup 命令行执行可查看信息。facter_ipaddress 已经不再支持,需要更改为 ansible_eth0.ipv4.address
playbook 的特性 handlers
handlers 的目的是在执行完成 tasks 之后,还需要进行其他的操作时,使用 handlers。但是这里需要保证只有在 tasks 执行成功之后,handlers 才会生效。这种比较适合配置文件发生更改后,自动重启服务的操作。
# vim /etc/ansible/handlers.yml
---
- hosts: testhosts
remote_user: root
tasks:
- name: test copy
copy: src=/tmp/1.txt dest=/tmp/2.txt
notify: test handlers
handlers:
- name: test handlers
shell: echo "121212" >> /tmp/2.txt
关键点在于 notify,在 copy 成功之后,执行 handlers,notify 后面的名字,对应的是 handlers 选项中的 - name 选项,如果没有写 notify,就不会执行 handlers 里面的命令。
NOTE: copy 有个特性,和 rsync 类似,如果拷贝的两个文件内容一模一样,那就就不会进行拷贝的操作,在这个 handlers 的文件中,也就不会去执行 handlers 的操作。
阅读全文
0 0
- Ansible Playbook 介绍
- Ansible playbook
- ansible-playbook
- ansible playbook
- ansible playbook
- Ansible之YMAL语法介绍以及playbook详解
- ansible playbook最佳实践
- ansible-playbook简介
- ansible之playbook入门
- Ansible playbook简单示例
- Ansible 基础入门-Playbook
- Ansible系列(5): Playbook
- Ansible playbook lookups 和 conditionals
- Ansible之playbook学习一
- ansible使用playbook安装nginx
- ansible之创建可复用playbook
- ansible-playbook批量部署nginx
- ansible playbook支持的atrributes
- 《PHP中将二维数组中相同的字段放在同一数组中》
- java22
- JavaScript基础(二)- JS在页面中的位置
- js实现DIV背景色随机
- java23
- Ansible Playbook 介绍
- c# 判断输入的号码是否是合法的手机号码
- android studio常见错误及异常处理记录
- java24
- 为工业机器人的学生分享一款ABB公司的机器人仿真软件
- 线程中CreateEvent和SetEvent及WaitForSingleObject的用法
- 注解(Annotation)自定义注解(四)--编译期注解解析讲解和手写ButterKnife
- 使用IntelliJ IDEA 配置Maven(入门)
- HTML基础---认识标签(body,p,hx,span,br, blockquote,q,address,code,pre)