...温岭做网站,个人养老金制度将落地,园区做网站的好处,个人网页设计ps目录 配置文件
基本语法规则#xff1a;
YAML支持的数据结构 playbook核心元素
ansible-playbook用法#xff1a;
触发器
特点#xff1a;
角色#xff1a;
习题#xff1a; 配置文件
playbook配置文件使用yaml语法#xff0c;YAML 是一门标记性语言,专门用来写配…目录 配置文件
基本语法规则
YAML支持的数据结构 playbook核心元素
ansible-playbook用法
触发器
特点
角色
习题 配置文件
playbook配置文件使用yaml语法YAML 是一门标记性语言,专门用来写配置文件的语言非常简洁和强大远比 JSON 格式方便。yaml格式文件用于保存针对特定需求的任务列表。应为逐条输入命令效率非常的低下更有效的方案是在playbook配置文件中放置所有的任务代码可以实现自动化运维yaml文件的扩展名为.yaml或.yml。
基本语法规则
yaml语法和其他高级语言类似其结构缩进来展示通过 “ - ” 来代表项通过冒号“ ”来分隔键和值整个文件以 “---”开始并以“ …”结束开始结束符号可以不写只是表明一个文件的开始。可以直接以 - hosts开头
列表中的所有成员都开始于相同的缩进级别, 并且使用一个 - 作为开头(一个横杠和一个空格):
1.大小写敏感
2.使用缩进表示层级关系每个任务之间的缩进必须严格要求务必对齐语法没有问题缩进有问题一样不能执行。缩进问题ansible-playbook --syntax-check 命令检测不出来。
3.不允许使用TAB键来缩进只允许使用空格键来缩进!!!
4.缩进的空格数量不重要,空格数量要一致建议使用两个空格
5.使用#来表示注释
YAML支持的数据结构
对象字典键值对的集合又称为映射mapping/ 哈希hashes / 字典dictionary
数组列表一组按次序排列的值又称为序列sequence / 列表list
纯量scalars单个的、不可再分的值
- hosts: noe-group #对noe-group组的操作remote_user: root #远端执行用户身份为roottasks: #任务列表- name: adduser user #任务名称user: nameuser2 statepresent #执行user模块创建用户tags: #创建tag标签- a #tag标签为a所有的“一”和“:”后面均有空格而且要注意缩进和对齐 playbook核心元素 hosts: 任务的目标主机多个主机用冒号分隔 一般调用/etc/ansible/hosts 中的分组信息。 remote_user: 远程主机上运行此任务的身份默认为root。 tasks: 任务即定义的具体任务由模块定义的操作列表。 handlers: 触发器类似tasks, 只是在特定的条件下才会触发的任务。某任务的状态在运行后为 changed 时可通过notify 通知给相应的 handlers 进行触发执行。 roles: 角色将hosts剥离出去由 tasks、handlers 等所组成的一种特定的结构集合。
ansible-playbook用法 --syntax-check 检测 yaml文件的语法。 -C(--check) 预测试不会改变目标主机的任何设置。 --list-hosts 列出 yaml 文件影响的主机列表。 -list-tasks 列出 yaml 文件的任务列表。 --list-tegs 列出 yaml 文件中的标签。 -t TAGS(--tagsTAGS) 表示只执行指定标签的任务。 --skip-tagsSKIP_TAGS 表示除了指定标签的任务执行其他任务。 --start-at-taskSTART_AT 从指定的任务开始往下运行。
触发器
需要条件触发才能执行的任务之前定义在 tasks 中的任务执行成功后在此基础上触发其他的任务继续执行就需要定义handlers。
特点 handlers 是 Ansible提供的条件机制之一。handlers 和 task 很类似但是它只在被task 通知的 时候才会触发执行。 handlers 只会在所有任务执行完后执行。而且即使被通知了多次它也只会执行一次。handlers 按照定义的顺序依次执行。
例如
- hostsnot-group #针对not-group组进行的操作remote_user: root #远程执行身份为roottasks: #任务列表- name: modify port #任务名称shell: sed -i s/Listen\80/Listen\8080/g /etc/httpd/conf/httpd.conf#使用shell模块执行操作修改端口notify #配置触发条件- restart httpd server #完成该任务后调用名为“restart httpd server”的触发器handlers: #配置触发器- name: restart httpd server #指定触发器名称servicenamehttpd staterestarted #触发任务为重启httpd服务
角色
将多种不同的 tasks 的文件集中存储在某个目录下则该目录就是角色。角色一般存放在 /etc/ansible/roles/目录可通过 ansible 的配置文件来调整默认的角色目录/etc/ansible/roles/目 录下有很多子目录其中每一个子目录对应一个角色每个角色也有自己的目录结构。 /etc/ansible/roles/为角色集合该目录下有自定义的各个子目录
1、mariadb:mysql 角色。
2、Apache:httpd 角色。
3、nginx:nginx 角色。
每个角色的定义以特定的层级目录结构进行组织。以Mariadb(mysql角色)为例
1、files,存放由 copy 或 script 等模块调用的文件。2、templates:存放 template 模块查找所需要的模板文件的目录如 mysql 配置文件等模板。 3、tasks:任务存放的目录。4、handlers:存放相关触发执行器的目录5、vars:变量存放的目录。6、meta: 用于存放此角色元数据。7、default:默认变量存放的目录文件中定义了此角色使用的默认变量。
上述目录中tasks、handlers、vars、meta、default 至少应该包含一个 main.yml 文件该目录下也可以有其他.yml 文件但是需要在main.yml 文件中用 include 指令将其他.yml 文件包含进来。 有了角色之后可以直接在 yaml文件 (playbook 配置文件)中调用角色。
例如
- hostsnot-groupremote_user rootrolse- mysql #调用角色名- httpd #调用角色名
可以只调用一个角色.也可以调用多个角色。当定义了角色后用 ansible-playbook PLAYBBOOK 文件执行即可。此时 ansible会到角色集合的目录(/etc/ansible/roles)去找 mysql 和 httpd 目录然后 依次运行 mysql 目录和 httpd目录下的所有代码。下面通过一个实例配置数据库角色要求被管理主机上自动安装 Mariadb,安装完成之后上传提 前准备好的配置文件至远端主机重启服务然后新建 testdb 数据库并允许 test 用户对其拥有所有权限。
习题 1.Ansible 根据角色划分为( )三个部分。 A. 使用者 BAnsible 脚本 C.Ansible 工具集 D. 作用对象. 2. 下面属于Ansible 工具集的有( ). A.Inventory B.Modules C.Plugins D.API 3.Ansible 中 Inventory 文件的默认路径是( ). A./etc/ansible/Inventory B./etc/ansible/Inventory.conf C./etc/ansible/hosts D./etc/ansible/hosts.conf 4.Ansible 中角色默认位于( )目录中. A./var/ansible/roles B./etc/ansible/roles C./etc/roles D./opt/ansible/roles 5.Ansible 中 command 模块的作用是( ) A. 执行 linux 命令 B. 修改文件权限 C. 安装软件 D. 复制文件