1、利用 playbook 创建 mysql 用户
[root@ansible ansible]# vim mysql_user.yml
---
- hosts: dbservers
remote_user: root
gather_facts: no
tasks:
- name: create mysql group
group:
name: mysql
system: yes
gid: 306
- name: create mysql user
user:
name: mysql
shell: /sbin/nologin
system: yes
group: mysql
uid: 306
home: /data/mysql
create_home: no
[root@ansible ansible]# ansible-playbook mysql_user.yml
PLAY [dbservers] ******************************************************************************************************************
TASK [create mysql group] *********************************************************************************************************
changed: [192.168.1.21]
TASK [create mysql user] **********************************************************************************************************
changed: [192.168.1.21]
PLAY RECAP ************************************************************************************************************************
192.168.1.21 : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@ansible ansible]# ansible-playbook -v mysql_user.yml
Using /etc/ansible/ansible.cfg as config file
PLAY [dbservers] ******************************************************************************************************************
TASK [create mysql group] *********************************************************************************************************
ok: [192.168.1.21] => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "gid": 306, "name": "mysql", "state": "present", "system": true}
TASK [create mysql user] **********************************************************************************************************
ok: [192.168.1.21] => {"append": false, "changed": false, "comment": "", "group": 306, "home": "/data/mysql", "move_home": false, "name": "mysql", "shell": "/sbin/nologin", "state": "present", "uid": 306}
PLAY RECAP ************************************************************************************************************************
192.168.1.21 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
2、利用 playbook 安装和卸载 nginx
# 安装nginx
[root@ansible ansible]# vim install_nginx.yml
---
- hosts: webservers
remote_user: root
gather_facts: no
tasks:
- name: create nginx group
group:
name: nginx
state: present
- name: create nginx user
user:
name: nginx
state: present
group: nginx
- name: install nginx
yum:
name: nginx
state: present
- name: web page
copy:
src: files/index.html
dest: /usr/share/nginx/html/index.html
- name: start nginx
service:
name: nginx
state: started
enabled: yes
[root@ansible ansible]# ansible-playbook install_nginx.yml
PLAY [webservers] *****************************************************************************************************************
TASK [create nginx group] *********************************************************************************************************
changed: [192.168.1.12]
changed: [192.168.1.13]
TASK [create nginx user] **********************************************************************************************************
changed: [192.168.1.12]
changed: [192.168.1.13]
TASK [install nginx] **************************************************************************************************************
changed: [192.168.1.13]
changed: [192.168.1.12]
TASK [web page] *******************************************************************************************************************
changed: [192.168.1.12]
changed: [192.168.1.13]
TASK [start nginx] ****************************************************************************************************************
changed: [192.168.1.13]
changed: [192.168.1.12]
PLAY RECAP ************************************************************************************************************************
192.168.1.12 : ok=5 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.1.13 : ok=5 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@ansible ansible]# curl http://192.168.1.12
Hello Nginx 2022
[root@ansible ansible]# curl http://192.168.1.13
Hello Nginx 2022
# 卸载Nginx
[root@ansible ansible]# vim remove_nginx.yml
---
- hosts: webservers
remote_user: root
gather_facts: no
tasks:
- name: remove nginx package
yum:
name: nginx
state: absent
- name: remove nginx user
user:
name: nginx
state: absent
remove: yes
3、利用 playbook 安装和卸载 httpd
# 安装httpd
[root@ansible ansible]# vim install_httpd.yml
---
- hosts: webservers
remote_user: root
gather_facts: no
tasks:
- name: install httpd
yum:
name: httpd
- name: modify config listen port
lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: '^Listen'
line: 'Listen 8080'
- name: modify config data1
lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: '^DocumentRoot "/var/www/html"'
line: 'DocumentRoot "/data/html"'
- name: modify config data2
lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: '^<Directory "/var/www/html">'
line: '<Directory "/data/html">'
- name: mkdir website dir
file:
path: /data/html
state: directory
- name: web html
copy:
src: files/index.html
dest: /data/html/
- name: start service
service:
name: httpd
state: started
enabled: yes
[root@ansible ansible]# ansible-playbook install_httpd.yml
PLAY [webservers] *****************************************************************************************************************
TASK [install httpd] **************************************************************************************************************
changed: [192.168.1.12]
changed: [192.168.1.13]
TASK [modify config listen port] **************************************************************************************************
changed: [192.168.1.13]
changed: [192.168.1.12]
TASK [modify config data1] ********************************************************************************************************
changed: [192.168.1.13]
changed: [192.168.1.12]
TASK [modify config data2] ********************************************************************************************************
changed: [192.168.1.13]
changed: [192.168.1.12]
TASK [mkdir website dir] **********************************************************************************************************
changed: [192.168.1.12]
changed: [192.168.1.13]
TASK [web html] *******************************************************************************************************************
changed: [192.168.1.12]
changed: [192.168.1.13]
TASK [start service] **************************************************************************************************************
changed: [192.168.1.12]
changed: [192.168.1.13]
PLAY RECAP ************************************************************************************************************************
192.168.1.12 : ok=7 changed=7 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.1.13 : ok=7 changed=7 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@ansible ansible]# curl http://192.168.1.12:8080
Hello Nginx 2022
[root@ansible ansible]# curl http://192.168.1.13:8080
Hello Nginx 2022
# 卸载httpd
[root@ansible ansible]# vim remove_httpd.yml
---
- hosts: webservers
remote_user: root
gather_facts: no
tasks:
- name: remove httpd package
yum:
name: httpd
state: absent
- name: remove apache user
user:
name: apache
state: absent
- name: remove config file
file:
name: /etc/httpd
state: absent
- name: remove website file
file:
name: /data/html
state: absent
4、利用 playbook 安装 MySQL 5.6
# 准备相关安装包及文件
[root@ansible files]# ll mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz
-rw-r--r-- 1 root root 341603885 Nov 15 09:21 mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz
[root@ansible ~]# vim ansible/files/my.cnf
[mysqld]
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
datadir=/data/mysql
innodb_file_per_table=1
log-bin
pid-file=/data/mysql/mysqld.pid
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
[root@ansible ~]# vim ansible/files/secure_mysql.sh
#!/bin/bash
/usr/local/mysql/bin/mysql_secure_installation <<EOF
y
123456
123456
y
y
y
y
EOF
[root@ansible files]# tree /root/ansible/files/
/root/ansible/files/
├── index.html
├── my.cnf
├── mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz
└── secure_mysql.sh
[root@ansible ansible]# vim install_mysql5.6.yml
---
- hosts: dbservers
remote_user: root
gather_facts: no
tasks:
- name: install packages
yum:
name:
- libaio
- perl-Data-Dumper
- perl-Getopt-Long
- name: create mysql home directory
file:
path: /data/mysql
state: directory
- name: create mysql group
group:
name: mysql
gid: 306
- name: create mysql user
user:
name: mysql
uid: 306
group: mysql
shell: /sbin/nologin
system: yes
create_home: no
home: /data/mysql
- name: copy tar to remote host and file mode
unarchive:
src: /root/ansible/files/mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz
dest: /usr/local/
owner: root
group: root
- name: create linkfile /usr/local/mysql
file:
src: /usr/local/mysql-5.6.51-linux-glibc2.12-x86_64
dest: /usr/local/mysql
state: link
- name: data dir
shell: chdir=/usr/local/mysql/ ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
tags: data
- name: config my.cnf
copy:
src: /root/ansible/files/my.cnf
dest: /etc/my.cnf
- name: service script
shell: /bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
- name: enable service
shell: /etc/init.d/mysqld start;chkconfig --add mysqld;chkconfig mysqld on
tags: service
- name: PATH variable
copy:
content: 'PATH=/usr/local/mysql/bin:$PATH'
dest: /etc/profile.d/mysql.sh
- name: secure script
script: /root/ansible/files/secure_mysql.sh
tags: script
[root@ansible ansible]# ansible-playbook install_mysql5.6.yml
PLAY [dbservers] ******************************************************************************************************************
TASK [install packages] ***********************************************************************************************************
changed: [192.168.1.21]
TASK [create mysql home directory] ************************************************************************************************
changed: [192.168.1.21]
TASK [create mysql group] *********************************************************************************************************
changed: [192.168.1.21]
TASK [create mysql user] **********************************************************************************************************
changed: [192.168.1.21]
TASK [copy tar to remote host and file mode] **************************************************************************************
changed: [192.168.1.21]
TASK [create linkfile /usr/local/mysql] *******************************************************************************************
changed: [192.168.1.21]
TASK [data dir] *******************************************************************************************************************
changed: [192.168.1.21]
TASK [config my.cnf] **************************************************************************************************************
changed: [192.168.1.21]
TASK [service script] *************************************************************************************************************
changed: [192.168.1.21]
TASK [enable service] *************************************************************************************************************
changed: [192.168.1.21]
TASK [PATH variable] **************************************************************************************************************
changed: [192.168.1.21]
TASK [secure script] **************************************************************************************************************
changed: [192.168.1.21]
PLAY RECAP ************************************************************************************************************************
192.168.1.21 : ok=12 changed=12 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END