一、Ansible-playbook实战
1.Ansible-playbook安装软件
```bash
#编写yml
[root@ansible ansible]# cat wget.yml
- hosts: backup
tasks:
- name: Install wget
yum:
name: wget
state: present
#检查playbook的语法
[root@ansible ansible]# ansible-playbook --syntax-check wget.yml
playbook: wget.yml
#执行playbook
[root@ansible ansible]# ansible-playbook wget.yml
2.Playbook重构backup服务
```bash
1.定义主机清单
[root@ansible ansible]# cat /etc/ansible/hosts
nfs ansible_ssh_host=10.0.0.31
backup ansible_ssh_host=10.0.0.41
2.写playbook重构
[root@ansible ansible]# cat backup.yml
- hosts: backup
tasks:
- name: Install Rsync Server
yum:
name: rsync
state: present
- name: Configure Rsync Server
copy:
src: rsyncd.conf
dest: /etc/rsyncd.conf
- name: Create www Group
group:
name: www
gid: 666
- name: Create User www
user:
name: www
uid: 666
group: www
shell: /sbin/nologin
create_home: false
- name: Configure passwd file
copy:
content: rsync_backup:123456
dest: /etc/rsync.passwd
mode: 0600
- name: Create Dir /backup
file:
path: /backup
state: directory
owner: www
group: www
- name: Start Rsync Server
systemd:
name: rsyncd
state: started
enabled: yes
3.playbook重构nfs服务
```bash
1.定义主机清单
[root@ansible ansible]# cat /etc/ansible/hosts
nfs ansible_ssh_host=10.0.0.31
backup ansible_ssh_host=10.0.0.41
2.打通免秘钥
[root@ansible ~]# ssh-copy-id 10.0.0.31
3.写playbook
[root@ansible ansible]# cat nfs.yml
- hosts: nfs
tasks:
- name: Install NFS Server
yum:
name: nfs-utils
state: present
- name: Configure nfs Server
copy:
src: exports
dest: /etc/
- name: Create www Group
group:
name: www
gid: 666
- name: Create User www
user:
name: www
uid: 666
group: www
shell: /sbin/nologin
create_home: false
- name: Create /data/wp
file:
path: /data/wp
state: directory
owner: www
group: www
- name: Start NFS Server
systemd:
name: nfs
state: started
enabled: yes
客户端挂载:
[root@ansible ansible]# cat web.yml
- hosts: web01
tasks:
- name: Install nfs-utils
yum:
name: nfs-utils
state: present
- name: mount nfs /data/wp-->wordpress
mount:
src: 172.16.1.31:/data/wp
path: /code/wordpress/wp-content/uploads/
state: mounted
fstype: nfs
```
4.Playbook重构nginx-php
```bash
1.定义主机清单
[root@ansible ~]# cat /etc/ansible/hosts
nfs ansible_ssh_host=10.0.0.31
backup ansible_ssh_host=10.0.0.41
web01 ansible_ssh_host=10.0.0.7
web02 ansible_ssh_host=10.0.0.8
2.免秘钥
[root@ansible ~]# ssh-copy-id 10.0.0.8
3.playbook
[root@ansible ansible]# cat nginx.yml
- hosts: web02
tasks:
- name: Nginx Repo
yum_repository:
name: nginx
description: Nginx YUM repo
baseurl: http://nginx.org/packages/centos/7/$basearch/
gpgcheck: no
enabled: yes
- name: Install Nginx Server
yum:
name: nginx
state: present
- name: Configure Nginx Server
copy:
src: nginx.conf
dest: /etc/nginx/
- name: create group www
group:
name: www
gid: 666
- name: Create www user
user:
name: www
uid: 666
group: www
shell: /sbin/nologin
create_home: false
- name: Start Nginx Server
systemd:
name: nginx
state: started
enabled: yes
5.Playbook重构mariadb
[root@ansible ansible]# cat php.yml
- hosts: web02
tasks:
- name: Install PHP Server
yum:
name: php,php-bcmath,php-cli,php-common,php-devel,php-embedded,php-fpm,php-gd,php-intl,php-mbstring,php-mysqlnd,php-opcache,php-pdo,php-process,php-xml,php-json
state: present
- name: Configure PHP Server
copy:
src: www.conf
dest: /etc/php-fpm.d/
- name: Start PHP Server
systemd:
name: php-fpm
state: started
enabled: yes
6.整合playbook文件
[root@ansible ansible]# cat mysql.yml
- hosts: db01
tasks:
- name: Install mariadb Server
yum:
name: mariadb-server,python3-mysqlclient
state: present
- name: Start mariadb Server
systemd:
name: mariadb
state: started
enabled: yes
- name: copy all.sql to 51
copy:
src: all.sql
dest: /root/
- name: Configure Mmriadb Server
mysql_db:
login_user: root
login_host: localhost
login_port: 3306
name: all
target: /root/all.sql
state: import
- name: Restart mariadb
systemd:
name: mariadb
state: restarted
```
##### 07.部署wordpress
```bash
[root@ansible ansible]# cat wp.yml
- hosts: web02
tasks:
- name: Delete Default default.conf
file:
path: /etc/nginx/conf.d/default.conf
state: absent
- name: Copy wp.conf
copy:
src: wp.conf
dest: /etc/nginx/conf.d/
- name: unarchive wp.tar.gz
unarchive:
src: wp.tar.gz
dest: /
creates: /code/wordpress
- name: Restart Nginx Server
systemd:
name: nginx
state: restarted
```