linux下ansible-playbook中roles角色手动创建与系统创建等四种的使用方法及介绍

1、手动创建角色目录

  • vi ansbile.cfg 在ansible的配置文件中加入 roles角色。

    roles_path = /root/ansible/roles   定义角色路径(上面还有一些之前定义的主机清单路径)
  • mkdir -p /root/anslinux必学的60个命令ible/roles/httpd/tasks 手动创建ansible常用命令角色以ansibleplaybook及相关目录 创建一个名叫httpd的角色,(可自定义名字) 但是后面的tasks 是固定的

  • vi /rooansible模块tlinux命令/ansible/roles/httpdansible详解/tasks/mailinux命令n.yml 编写任务。(main是固定的linux格式加yml)

    ---
    - yum:                  直接调用模块任务
      name: httpd         安装httpd 服务
    - debug:                多写的一个任务(做实验用,可不写) 
      msg: "ok"
  • vi roles.yml 编写playbook

    ---
    - hosts: node1      对node1主机执行
      roles:          定义角色任务(正常是写tasks定义模块任务,这里直接使用roles调用角色任务)
        - httpd
  • ansible-playbook roles.ymlinuxl 执行playbook

使用roles时,先定义角色任务,然后写playbook执行

2、系统创建角色 ansible-galaxy

  • ansible-galalinuxxy init roles/mysql
    使用galaxy 系统创建目录, init 创建一个角色, 角色名mysql是自定义的
  • 下面是系统创建角色后自带的目录
  1. tasks 里面有个main.yml 可以存放任务
  2. files 存放静态文件,比如图片、配置文件、视频
  3. meta 作者、角色的介绍,版本信linux是什么操作系统
  4. templates 存放动态文件
  5. vars main.yml vars里面的 main.yml是存放变量,优先级高
  6. defaults 存放变量,优先级低
  7. handlers 存放提前定义的任务
  • vi roles/mysql/tasks/main.yml 定义角色任务 后面的、tasks/m系统运维工程师ain.yml 是定义角linux重启命令色任务的固定写法

    ---                            这时会发现是系统自动写好了 ---
    # tasks file for foles/mysql   这个系统提示是哪个任务
    - yum:                         自己写的模块任务
      name: unzip                装个unzip
    - corp:                        新写的一个模块任务(拷贝) 
      src: a.txt                 拷贝的源路径(由于是在角色中使用,所有不用绝对路径,这个a.txt就在musql角色中系统创建的files目录里面,是自动往这个里面找的,但前提是这个files里面真的有这个a.txt文件,没有的话就自己去写一个)  
      dest: /opt/                拷贝到对方的路径
    - debug:                       新写的一个模块任务 (变量)
      msg: "{{test111}}"         喊出变量(由于是在角色中使用,自定义的随便写的系统中可能没有,这个变量就在musql角色中系统创建的vars 里面的 main.yml 或者defaults目录里面,是自动往这个里面找的,但前提是这个vars 里面的 main.yml或者defaults里面真的有这个变量,没有的话就自己去写一个)
    - template:                    新写的一个任务 (模板) 
      src: xyz.j2                传一个带变量的j2的动态模板(由于是在角色中使用,所有不用绝对路径,这个xyz.12就在musql角色中系统创建的tmeplate目录里面,是自动往这个里面找的,但前提是这个template里面真的有这个xyz.j2文件,没有的话就自己去写一个)
      dest: /opt                 传到对方的/opt下   
    #方便做实验 先把定义的任务加进对应的目录里面   
    1、echo aaa > roles/mysql/files/a.txt
    2、vi roles/mysql/vars/main.yum
     写入内容
     test111: aaaaa
    3、vi roles/mysql/template/xyz.j2
     写入内容
     {{ansible_fqdn}}    表示完整主机域名
  • vi roles.yml系统运维工作内容 编写playbook (这个之前ansible定义变量规则已经写过了 里面有一个任务了,可以新写一个,也可以用同一个)

    ---
    - hosts: node1      对node1主机执行
      roles:          定义角色任务(正常是写tasks定义模块任务,这里直接使用roles调用角色任务)
        - httpd       执行的角色对象
        - mysql       执行的角色对象  (这里执行的就是上面写的一大堆的任务)
  • ansible-playbook roles.yml 执Ansible行playbansible详解ook

总结,roles 使用时 就是先写linux系统角色任务,然后在使用playbook调用角色任务,角色任务里面有什么任务,playbooansible常用模块k就执行什么任务(跟手动创建目录类似,区别就是系统自动创建)

下载别人角色方法

  • vi qwe.yml

    - name: qqq       定义下载过来之后叫什么名字   (自定义的qqq)
     src: http://   别人角色的路径地址   
  • ansible-galaxy install -r qwe.yml 执行
    下载的话 就不用init了 用install 表示用别人的下载过来 -r 表示指定用哪个yml文件安装,安装过来的目录是默认之前配置文件定义的roles目ansible模块录下

4、系统/运维第四种角色使用方法,用系统自带的角色 yum安装

(以同步时间的角色为例)

  • yum -y install rhel-system-rolelinux重启命令s 安装

  • yum list | grep roles 忘了包名的话根据关键字查询

  • rpm -ql rhelansible判断运算符-system-roles 查这个包装在哪里
    大概是最长的一个、/usr/share/ansible/roles

  • cd /usr/share/ansiblinux命令le/roles / ls 进去并查看信息

  • cp -r rhel-system-roles.timesync ~/ansible/roles 拷贝过来使用

  • cd ~/ansible/roansible判断运算符les /ls 进去并查看

  • 写个 playbook

    ---
    - hosts: node1
    vars:
      timesync_ntp_servers:             定义同步时间
        - hostname: foo.example.com     对方主机地址
          iburst: yes                   多次尝试执行
    roles:
      - rhel-system-roles.timesync      调用角色任务
    #每个角色的里面都有一个 README.md 文件 用来帮助使用, 上面的内容可以去里面查看 搜关键字 EXAMPLE playbook    
  • ansibilansible定义变量规则e-playbook + playbook 执行 (一ansible判断运算符定要拷贝到并且在ansible目录下执行)