1.playbook 多个模块yml语法
2.playbook 实现LAMP
3.playbook 实现LNMP
一、playbook 多个模块yml语法
playbook是一个文件,由play(定义主机或主机组)和 tasks组成(具体干什么)
| yml语法 |
|---|
| 缩进,不同级别之间,两个空格 |
| 冒号,后面要有一个空格 |
| - 短横线,后面要有一个空格(同一级别用) |
#具体的写法
[root@manager ansible_playbook]# ansible-playbook web.yml
- hosts: webservers #清单
tasks: #具体干什么
- name: Installed Nginx Server #说明
yum: #模块,安装
name: nginx #动作
state: present
#执行这个文件
[root@manager ansible_playbook]# ansible-playbook web.yml
二、playbook 实现 Lb+LNMP+Redis
以部署可道云为例
1.环境准备
[root@manager ~]# mkdir /ansible_cluster
[root@manager ~]# cd /ansible_cluster
#创建了两个目录conf和file,conf放playbook文件,file放一些需要拷贝的文件
[root@manager ansible_cluster]# ls
ansible.cfg conf file hosts
2.实现Redis
[root@manager ansible_cluster]# cat conf/redis.yml
- hosts: db
tasks:
- name: Installed Redis Server
yum:
name: redis
state: present
- name: Configure Redis Server
copy:
src: ../file/redis.conf.j2
dest: /etc/redis.conf
notify: Restart Redis Server
- name: Started Redis Server
systemd:
name: redis
state: started
enabled: yes
handlers:
- name: Restart Redis Server
systemd:
name: redis
state: restarted
3.实现LNMP
[root@manager ansible_cluster]# cat conf/web.yml
- hosts: webservers
tasks:
- name: Installed Nginx PHP7.1
yum:
name: "{{packages}}" #定义一个变量
state: present
vars:
packages: #这个变量包含什么
- nginx
- php71w
- php71w-cli
- php71w-common
- php71w-devel
- php71w-embedded
- php71w-gd
- php71w-mcrypt
- php71w-mbstring
- php71w-pdo
- php71w-xml
- php71w-fpm
- php71w-mysqlnd
- php71w-opcache
- php71w-pecl-memcached
- php71w-pecl-redis
- php71w-pecl-mongodb
- name: Configure Nginx
copy:
src: ../file/nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: Restarted Nginx Server #监控变化,如果变化就通知 handlers,与name进行匹配
- name: Configure PHP
copy:
src: ../file/php_www.conf.j2
dest: /etc/php-fpm.d/www.conf
notify: Restarted PHP Server
- name: Configure PHP.ini
copy:
src: ../file/php.ini.j2
dest: /etc/php.ini
notify: Restarted PHP Server
- name: Create Group
group:
name: www
gid: 777
- name: Create User
user:
name: www
uid: 777
group: www
create_home: no
shell: /sbin/nologin
- name: Configure Nginx Virtual Host
copy:
src: ../file/kdc.mrche.xyz.conf.j2
dest: /etc/nginx/conf.d/kdc.mrche.xyz.conf
notify: Restarted Nginx Server
- name: Init Nginx Virtual Host
file:
path: /ansible_code
state: directory
owner: www
group: www
recurse: yes
- name: Copy Code
unarchive: #拷贝并解压站点的包
src: ../file/kodexplorer4.40.zip
dest: /ansible_code/
owner: www
group: www
- name: Started Nginx Server
systemd:
name: nginx
state: started
enabled: yes
- name: Started PHP Server
systemd:
name: php-fpm
state: started
enabled: yes
handlers: #与 tasks 同级,与notify结合
- name: Restarted Nginx Server
systemd:
name: nginx
state: restarted
- name: Restarted PHP Server
systemd:
name: php-fpm
state: restarted
4.实现 lb负载均衡
[root@manager ansible_cluster]# cat conf/lb.yml
- hosts: lb
tasks:
- name: Installed Nginx Server
yum:
name: nginx
state: present
- name: Configure Nginx Server
copy:
src: ../file/nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: Restart Nginx Server
- name: Init Nginx Group
group:
name: www
gid: 777
- name: Init Nginx User
user:
name: www
uid: 777
group: www
create_home: no
shell: /sbin/nologin
- name: Configure Nginx Load File
copy:
src: ../file/proxy_kdc.mrche.xyz.conf.j2
dest: /etc/nginx/conf.d/proxy_kdc.mrche.xyz.conf
notify: Restart Nginx Server
- name: Started Nginx Server
systemd:
name: nginx
state: started
enabled: yes
handlers:
- name: Restart Nginx Server
systemd:
name: nginx
state: restarted
5.在当前目录下运行playbook文件
[root@manager ansible_cluster]# ansible-playbook conf/*.yml
6.访问网站检测








网友评论