美文网首页
Ansible角色

Ansible角色

作者: 吃可爱长大鸭 | 来源:发表于2019-10-09 20:48 被阅读0次

    1.目录说明:

    [root@m01 ~]# cd /etc/ansible/roles/
    [root@m01 /etc/ansible/roles]# tree
    .
    ├── init                  #角色名称
    │   ├── files             #存放需要copy的文件
    │   ├── handlers          #触发任务剧本
    │   ├── tasks             #具体任务剧本
    │   ├── templates         #模版文件
    │   └── vars              #存放变量文件
    

    1.编写init初始化角色剧本

    01.创建对应目录

    [root@m01 /etc/ansible/roles]# mkdir init/{vars,tasks,templates,handlers,files} -p
    

    02.编写任务剧本

    #配置ssh配置文件
    - name: 0-ssh
      template:
        src: sshd_config.j2
        dest: /etc/ssh/sshd_config 
    #配置selinux
    - name: 01-selinux
      selinux:
        state: disabled
     #配置firewalld防火墙
    - name: 02-firewalld
      service:
        name: firewalld
        state: stopped
        enabled: yes
      #安装CentOS-Base.repo和epel.repo源
    - name: 03-yum
      copy:
        src: "/etc/yum.repos.d/{{ item.src }}"
        dest: /opt/
      loop:
      - {src: 'CentOS-Base.repo'}
      - {src: 'epel.repo'}
      #安装常用软件
    - name: 04-yum-Software
      yum: 
        name: "{{ item }}"
        state: latest
      loop:
        - tree
        - nmap
        - sysstat
        - lrzsz
        - dos2unix
        - telnet
        - bash-completion
        - bash-completion-extras
        - lsof
        - net-tools
        - ntpdate
      tags: 04-yum
     #创建统一用户组
    - name: 05-create-group
      group: 
        name: www 
        gid: 666 
      #创建统一用户
    - name: 06-create-user
      user: 
        name: www 
        create_home: no 
        shell: /sbin/nologin 
        group: www 
        uid: 666
       #创建统一目录
    - name: 07-create-dir
      file: 
        path: "{{ item }}" 
        state: directory 
        owner: www 
        group: www
      loop:
        - /data
        - /backup
    
    

    03.编写jinja模版文件

    [root@m01 /etc/ansible/roles/init/templates]# cp /etc/ssh/sshd_config .   
    [root@m01 /etc/ansible/roles/init/templates]# mv sshd_config sshd_config.j2
    

    04.编写变量文件

    ######内置变量
    

    05.编写handlers文件

    #######没用handlers
    

    06.编写主任务文件

    [root@m01 /etc/ansible/roles]# vim init.yml 
    - hosts: init
      roles:
        - init
    

    07.查看最终目录文件

    [root@m01 /etc/ansible/roles/init]# tree
    .
    ├── files
    ├── handlers
    ├── tasks
    │   └── main.yml
    ├── templates
    │   └── sshd_config.j2
    └── vars
    

    2.编写nginx_server角色剧本

    01.创建对应目录

    [root@m01 /etc/ansible/roles]# mkdir nginx_server/{vars,tasks,templates,handlers,files} -p
    

    02.编写任务剧本

    [root@m01 /etc/ansible/roles/nginx_server/tasks]# vim main.yml
    #拷贝nginx新源配置文件
    - name: 01-templates-file
      template:
        src: nginx.repo.j2
        dest: /etc/yum.repos.d/
      notify:
        - restart nginx
     #安装1.16.1-nginx
    - name: 02-yum-install
      yum:
        name: nginx
        state: latest
      #启动nginx服务
    - name: 03-serivce
      service: 
        name: nginx
        state: started 
    

    03.编写jinja模版文件

    [root@m01 /etc/ansible/roles/nginx_server/templates]# vim nginx.repo 
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    
    [root@m01 /etc/ansible/roles/nginx_server/templates]# mv nginx.repo nginx.repo.j2
    
    

    04.编写变量文件

    ###########没用变量
    

    05.编写handlers文件

    [root@m01 /etc/ansible/roles/nginx_server/handlers]# vim main.yml
    #重启nginx服务
    - name: restart nginx
      service:
        name: nginx
        state: restarted
    

    06.编写主任务文件

    [root@m01 /etc/ansible/roles]# vim nginx_server.yml
    - hosts: web
      roles:
        - nginx_server
    

    07.查看最终目录文件

    [root@m01 /etc/ansible/roles/nginx_server]# tree
    .
    ├── files
    ├── handlers
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    ├── templates
    │   └── nginx.repo.j2
    └── vars
    

    3.编写php-fpm角色剧本

    01.创建对应目录

    [root@m01 /etc/ansible/roles]# mkdir php-fpm/{vars,tasks,templates,handlers,files} -p
    

    02.编写任务剧本

    [root@m01 /etc/ansible/roles/php-fpm/tasks]# vim main.yml 
    #安装php-fpm
    - name: 01-yum-install
      yum: 
        name: "{{ item }}"
        state: latest
      loop:
        - 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
      #拷贝php-fpm配置文件
    - name: 02-temlate
      copy: 
        src: www.conf
        dest: /etc/php-fpm.d/
      notify:
        - restart php-fpm
      #启动php-fpm服务
    - name: 03-start-php-fpm
      service:
        name: php-fpm
        state: started
    

    03.编写files文件

    [root@m01 /etc/ansible/roles/php-fpm/files]# cp /root/www.conf .
    

    04.编写变量文件

    #######没有var文件
    

    05.编写handlers文件

    #######没有handlers文件
    

    06.编写主任务文件

    [root@m01 /etc/ansible/roles]# vim nfs_client.yml
    - hosts: web
      roles:
        -  php-fpm
    

    07.查看最终目录文件

    [root@m01 /etc/ansible/roles/nfs_client]# tree
    .
    ├── files
    │   └── www.conf
    ├── handlers
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    ├── templates
    └── vars
    

    4.编写MySQL角色剧本

    01.创建对应目录

    [root@m01 /etc/ansible/roles]# mkdir mysql/{vars,tasks,templates,handlers,files} -p
    

    02.编写任务剧本

    [root@m01 /etc/ansible/roles/mysql/tasks]# vim main.yml 
    #安装数据库
    - name: 01-install
      yum: 
        name: 
          - mariadb
          - mariadb-server
          - MySQL-python
        state: latest
      notify:
        - 02set_root_password    
        - 03drop_test 
        - 04drop_user
        - 05create_remote_user
        - 06copy_sql
        - 07import_sql
      #启动mariadb服务
    - name: 02-start
      service:
        name: mariadb
        state: started
      #拷贝mysql配置文件
    - name: 03-copy_conf
      template:
        src: my.cnf.j2
        dest: /etc/my.cnf
      notify: 01restart_mysql
    

    03.编写jinja模版文件

    [root@m01 /etc/ansible/roles/mysql/templates]# cp /root/my.cnf .
    [root@m01 /etc/ansible/roles/mysql/templates]# mv my.cnf my.cnf.j2
    

    04.编写files文件

    [root@m01 /etc/ansible/roles/mysql/files]# cp /root/mysql.sql .  #拷贝倒出数据库的文件
    

    05.编写handlers文件

    [root@m01 /etc/ansible/roles/mysql/handlers]# vim main.yml
    #重启mariadb服务
    - name: 01restart_mysql
      service:
        name: mariadb
        state: restarted 
    #登录mysql
    - name: 02set_root_password
      mysql_user:
        name: root
        password: '123456'
    #mysql中创建test库
    - name: 03drop_test
      mysql_db: 
        login_user: root
        login_password: '123456'
        name: test
        state: absent
    #mysql创建 '' 库
    - name: 04drop_user
      mysql_user:
        login_user: root
        login_password: '123456'
        name: ''
        host_all: yes 
        state: absent
    #创建远程登录用户所有172.16.1.0/24网段都可以
    - name: 05create_remote_user
      mysql_user:
        login_user: root
        login_password: '123456'
        name: web
        password: '123456'
        priv: '*.*:ALL'
        host: '172.16.1.%'
        state: present
    #拷贝导出来的mysql文件  
    - name: 06copy_sql
      copy:
        src: mysql.sql
        dest: /opt/
    #登录数据库导入到下面的路径
    - name: 07import_sql
      mysql_db:
        login_user: root
        login_password: '123456'
        name: wordpress
        state: import
        target: /opt/mysql.sql
    

    06.编写主任务文件

    [root@m01 /etc/ansible/roles]# vim mysql.yml
    - hosts: mysql
      roles:
        -  mysql
    

    07.查看最终目录文件

    [root@m01 /etc/ansible/roles/mysql]# tree
    .
    ├── files
    │   └── mysql.sql
    ├── handlers
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    ├── templates
    │   └── my.cnf.j2
    └── vars
    

    相关文章

      网友评论

          本文标题:Ansible角色

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