目录
一、playbook简介
二、playbook的语法
三、playbook的核心组件
四、playbook的执行命令
五、vim 设定技巧
六、基本示例
一、playbook简介
1、playbook与ad-hoc相比,是一种完全不同的运用。
2、playbook是一种简单的配置管理系统与多机器部署系统的基础,且非常适合于复杂应用的部署。
3、playbook是一种简单的配置管理系统与多机器部署系统的基础,且非常适合于复杂应用的部署。
4、使用playbook可以方便的重用这些代码,可以移植到不同的机器上面,playbook才是ansible真正强大之处。
二、playbook的语法
playbook由YMAL语言编写:
YAML文件的格式:
1、文件的第一行应该以“---"
三个连字符开始,表明YMAL文件的开始
2、在同一行中,#
之后的内容表示注释,类似于shell,python
3、YMAL中的列表元素以”-”
开头然后紧跟着一个空格,同一个列表中的元素应该保持相同的缩进。4、一个字典是由一个简单的
键: 值
的形式组成(这个冒号后面必须是一个空格)5、字典也可以使用缩进形式来表示
特点:
可读性好
和脚本语言交互性号
易于实现
适用程序执行流梳理方式
可扩展性强
语法简介:
缩进严格
大小写敏感
key/value可以多行书写也可一行书写,一行书写用,隔开
value可以是个字符串,也可是list
一个play需要包括name和tasks
name 是描述
tasks 是动作
一个name只能包含一个task
扩展名称yml或者yaml
三、playbook的核心组件
name | 可选,建议使用,多用于说明 |
hosts | 受控主机列表 |
tasks | 任务,用于选择执行部分代码 |
1、主机与用户
---
- hosts: server2 //指定主机组,可以是一个或多个组,用逗号分隔
remote_user: root //指定远程主机执行的用户名
become: yes //切换用户运行
become_user: mysql //指定sudo用户为mysql
2、tasks列表
(1)play的主体部分是task列表,task列表中的各任务按次序逐个在hosts中指定的主机上执行,即在所有主机上完成第一个任务后再开始第二个任务。如果一个host执行task失败,整个tasks都会回滚。
(2)每一个task必须有一个名称name,这样在运行playbook时,从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的。
四、playbook的执行命令
--check|-C | 检测(预演) |
--syntax-check | 检测语法正确性 |
--list-hosts | 列出hosts |
--list-tags | 列出tag(标签) |
--list-tasks | 列出task(任务) |
--limit | 指定执行主机 |
-v -vv | 显示实现过程 |
ansible-playbook ftp.yml -C
ansible-playbook ftp.yml --syntax-check
ansible-playbook ftp.yml --list-hosts
ansible-playbook ftp.yml --list-tags
ansible-playbook ftp.yml --list-tasks
ansible-playbook ftp.yml --limit 192.168.67.112
五、vim 设定技巧
YAML文件有严格的缩进,为编写方便,设定vim
vim ~/.vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et
随着微服务的使用,在linux上使用vim或者vi命令编辑yml文件的时候,会自动缩进,导致文件根本 无法使用。
解决办法
粘贴前先执行如下命令: 再粘贴的时候,里面的内容就不再缩进了,完美解决。
:set paste
六、基本示例
1、编写playbook实现远程主机vsftpd的安装和自启动:
vim ftp.yml
- name: ftp
hosts: all
tasks:
- name: yum
yum:
name: vsftpd
state: present
- name: replace
replace:
path: /etc/vsftpd/vsftpd.conf
regexp: anonymous_enable=YES
replace: anonymous_enable=YES
- name: service
service:
name: vsftpd
state: started
enabled: yes
- name: firewalld
firewalld:
zone: public
service: ftp
state: enabled
immediate: yes
permanent: yes
2、编写playbook实现远程主机httpd的安装和自启动,虚拟主机等:
创建vhosts文件
vim vhosts.conf
cat vhosts.conf
<VirtualHost _default_:80>
DocumentRoot "/var/www/html"
CustomLog logs/default.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName bbs.westos.org
DocumentRoot "/var/virtual/westos.org/bbs/html"
CustomLog logs/bbs.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName login.westos.org
DocumentRoot "/var/virtual/westos.org/login/html"
CustomLog logs/login.log combined
</VirtualHost>
<Directory "/var/virtual">
Require all granted
</Directory>
vim http.yml
- name: httpd
hosts: all
tasks:
- name: yum
yum:
name: httpd
state: present
- name: lineinfile
lineinfile:
path: /var/www/html/index.html
line: default
- name: service
service:
name: httpd
state: started
enabled: yes
- name: firewalld
firewalld:
zone: public
service: http
permanent: yes
state: enabled
immediate: yes
- name: lineinfile
lineinfile:
path: /var/virtual/westos.org/bbs/html/index.html
line: bbs.westos.org
create: yes
- name: lineinfile
lineinfile:
path: /var/virtual/westos.org/login/html/index.html
line: login.westos.org
create: yes
- name: copy
copy:
src: ./vhosts.conf
dest: /etc/httpd/conf.d
- name: service
service:
name: httpd
state: restarted
enabled: yes
在访问主机添加解析
访问:查看是否成功