美文网首页
Ansible(playbook) day-02

Ansible(playbook) day-02

作者: Linux运维 | 来源:发表于2020-05-15 22:55 被阅读0次

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.访问网站检测

相关文章

网友评论

      本文标题:Ansible(playbook) day-02

      本文链接:https://www.haomeiwen.com/subject/smcdohtx.html