Ansible PlayBook剧本实战
playbook介绍
PlayBook即"剧本","兵书"之意,PlayBook是由以下部分组成的
-
play:
定义的是主机的角色。(主角还是配角) -
task:
定义的是角色具体执行的任务。(角色的台词和动作)
playbook: 由一个或多个play(角色)组成,一个play(角色)可以包含多个task(台词,动作)。
简单理解为: 使用不同的模块完成一件事情
在Ansible中"剧本文件"是以yml
、yaml
结尾的文件。
在SaltStack中"剧本文件"是以sls
结尾的文件。
但是语法,使用的都是yaml语法
- 缩进: 每一级别的下一级别都要缩进两个空格
- 短横线: 表示列表类型的数据(同一级别)
- 冒号: 除了以冒号结尾之外的所有冒号,后面一定要加空格
ansible-playbook 文件名.yml
- hosts: all
tasks:
- name: 创建ljy组
group:
name: ljy
gid: '777'
state: present
- name: 创建ljy用户
user:
name: ljy
uid: '777'
group: '777'
shell: /sbin/nologin
create_home: false
部署wordpress作业:
- hosts: all
tasks:
- name: 创建www组
group:
name: www
gid: '666'
state: present
- name: 创建www用户
user:
name: www
uid: '666'
group: '666'
shell: /sbin/nologin
create_home: false
- hosts: nfs
tasks:
- name: 下载nfs-utils
yum:
name: nfs-utils
state: present
- name: 配置服务端
copy:
content: '/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)'
dest: /etc/exports
- name: 创建共享目录并授权
file:
path: /data
owner: www
group: www
state: directory
- name: 启动服务并加入开机自启
service:
name: nfs
state: restarted
enabled: true
- hosts: db01
tasks:
- name: 安装MySQL-python,mariadb-server
yum:
name:
- MySQL-python
- mariadb-server
- name: 下发my.cnf文件
copy:
src: /root/wordpress/db01/my.cnf
dest: /etc/my.cnf
- name: 启动服务
service:
name: mariadb
state: started
enabled: true
- name: 创建数据库名
mysql_db:
name: wp
state: present
- name: 创建数据库用户
mysql_user:
name: wp_user
host: '%'
password: '123'
priv: 'wp.*:ALL'
state: present
- name: 下发数据库文件
copy:
src: /root/wordpress/db01/wp.sql
dest: /root/
- name: 导入数据库文件
mysql_db:
name: wp
state: import
target: /root/wp.sql
- hosts: web_group
tasks:
- name: 下发nginx,php文件
unarchive:
src: /root/wordpress/web/nginx_php.tgz
dest: /root/
- name: 安装nfs-utils
yum:
name: nfs-utils
- name: 安装nginx,php文件
shell: yum localinstall -y /root/nginx_php/*.rpm
- name: 下发nginx配置文件
copy:
src: /root/wordpress/web/nginx.conf
dest: /etc/nginx
- name: 下发网站配置文件
copy:
src: /root/wordpress/web/wp.conf
dest: /etc/nginx/conf.d
- name: 下发php配置文件
copy:
src: /root/wordpress/web/www.conf
dest: /etc/php-fpm.d
- name: 创建站点目录并授权
file:
path: /code
owner: www
group: www
state: directory
- name: 下发网站压缩包
unarchive:
src: /root/wordpress/web/wordpress.tgz
dest: /code
owner: www
group: www
- name: 启动服务
service:
name: nginx
state: started
enabled: true
- name: 启动服务
service:
name: php-fpm
state: started
enabled: true
- name: 挂载nfs
mount:
path: /code/wordpress/wp-content/uploads
src: 172.16.1.31:/data
fstype: nfs
state: mounted