zoukankan      html  css  js  c++  java
  • ansible的roles使用

    1.创建roles文件夹 

    mkdir roles

    2.在roles文件夹里面创建文件夹  

      cd roles/           

      mkdir {nginx,uwsgi,redis,mysql}

    3.cd nginx

    4.mkdir tasks/

    5.cd tasks/

    6.vi install.yml

    - name: install
      yun:name=nginx

    vi copyfile.yml

    - name : copyfile
      template:src=nginx.conf  dest=/etc/nginx/nginx.conf

     vi start.yml

    - name: start
      service:name=nginx state=started enabled=yes

     vi main.yml

    - import_tasks: install.yml
    - import_tasks: copyfile.yml
    - import_tasks: start.yml

     7.在nginx目录下安装nginx            yum install -y nginx

    8. 创建一个templates目录,和tasks目录同级   mkdir templates

     9.cd templates/

     10.cp /etc/nginx/nginx.conf .   将nginx配置文件拷贝到templtes文件夹下

    ansible 127.0.0.1 -m setup -a "filter=*process*"   #查询cpu个数

    11.vi nginx.conf 

      #改变两个参数
    
      worker_processes {{ansible_processor_vapus*2}}       #这里设置为cpu的个数或者cpu个数的两倍
    
       events{
    
                     worker_connections 102400;                  #这是连接数,可以调大
    
    }
    
      server{   #介绍
    
        listen# 第一个监听ipv4
    
        listen #第二个监听ipv6
    }
    
     

     12.如果不需要传变量需要创建一个files的目录,和tasks在同一级目录下 

     mkdir files

    以下是实例

      cd files/

      echo "test">>c.txt

      cd ..

      vi tasks/main.yml

    - name :file
       copy:dest=/tmp/aaa.txt  src=c.txt

     13.如果要是传变量的话,在tasks的同级目录下创建一个vars的目录 

     mkdir vars

    vi vars/main.yml

    {"user":alex}

     vi tasks/main.yml

    - name:createuser
      user: name={{user}}

     14.使用handler同样需要在tasks的同级目录下创建handlers目录 

    mkdir handlers

    vi handlers/main.yml

    - name: restartngnx
      service: name=nginx state=restarted

     vi tasks/main.yml

      notify:restart   #用来触发handlers

     15.在roles平级的目录下

    vi nginx.yml

    - hosts : web
      roles:
      - nginx
    #web是一个ip组的名称相当于一个ip

     16.ansible-playbook --syntax-chek nginx.yml   测试代码没有问题

    17.ansible-playbook  nginx.yml   启动代码

    18. vi roles/nginx/templates/nginx.conf 

    server{
           listen  80;
            listen [::]:80;   #改这两个参数        
    }
    roles
    
    - 目录结构清晰
    - 可以相互调用  - import_tasks: roles/nginx/tasks/install.yml
    - 备份方便
    
    解耦
    
    ```
    roles/nginx/
    ├── files       -- 静态文件
    │   └── c.txt
    ├── handlers    -- 触发的任务
    │   └── main.yml
    ├── tasks       -- 任务(必须的)
    │   ├── copyfile.yml
    │   ├── install.yml
    │   ├── main.yml
    │   └── start.yml
    ├── templates  -- 动态文件,需要传递参数
    │   └── nginx.conf
    └── vars      -- 变量
        └── main.yml
    
    ```
    
    查找顺序
    
    - 主文件看到roles,就回去roles目录下面找对应的目录
    - 先去tasks目录里面找main.yml文件,如果遇到import_task则加载任务
    - 如果遇到了template,则去templates目录里面找文件
    - 如果遇到了copy,则去files目录里面找文件
    - 如果遇到了变量,则去vars目录里面找main.yml文件
    - 如果遇到了notify,则去handlers目录里面找main.yml文件

     互相调用(uwsgi调用nginx的安装程序nginx.yml)

    1.cd roles/uwsgi/

    2.vi tasks/main.yml

    - import_tasks:roles/nginx/tasks/install.yml

    3.在roles同级目录下

    vi uwsgi.yml

    -hosts:web
      roles:
      - uwsgi
    #web是一个ip组的名称相当于一个ip

     4.ansible-playbook uwsgi.yml    启动文件   

    这样就调用成功

  • 相关阅读:
    composer安装Workerman报错:Installation failed, reverting ./composer.json to its original content.
    从零开始搭建linux下laravel 5.5所需环境(三)
    ASPNET Razor 使用 @Ajax.BeginForm 需要注意到的细节
    .NET跨平台
    1172金币
    1044电子表
    1358统计号码牌
    1355疫情防控 数据调查
    1056反向输出一个三位数2
    1071行李托运
  • 原文地址:https://www.cnblogs.com/l1222514/p/10834429.html
Copyright © 2011-2022 走看看