Ansible使用01

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
喜欢就支持一下吧
点赞0 分享