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是自定义的 - 下面是系统创建角色后自带的目录
- tasks 里面有个main.yml 可以存放任务
- files 存放静态文件,比如图片、配置文件、视频
- meta 作者、角色的介绍,版本信linux是什么操作系统息
- templates 存放动态文件
- vars main.yml vars里面的 main.yml是存放变量,优先级高
- defaults 存放变量,优先级低
- 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目录下执行)
发表评论