涿州住房和城乡建设局网站,org域名不能注册了,ag娱乐建设网站,上海企业登记在线服务平台三种常见的数据格式#xff1a;
XML#xff1a;可扩展标记语言#xff0c;用于数据交换和配置
JSON#xff1a;对象标记法#xff0c;主要用来数据交换或配置#xff0c;不支持注释
YAML#xff1a;不是一种标记语言#xff0c;主要用来配置#xff0c;大小写敏感
XML可扩展标记语言用于数据交换和配置
JSON对象标记法主要用来数据交换或配置不支持注释
YAML不是一种标记语言主要用来配置大小写敏感不支持tab
tomcat的语法格式就是xml格式自动化脚本就是用的yaml格式。
一、特点
playbook剧本是由一个或多个play组成的列表。
play的主要功能在于将定义的一组主机装扮成事先通过ansible的task定义好的任务角色。task实际是调用ansilbe的一个module将多个play组织在一个playbook中即可以让它们联合起来按事先编排的机制执行预定义的动作。
playbook文件采用yaml(yml)语言编写.
二、yaml语言
特性
可读性好、和脚本语言的交互性好、使用实现语言的数据类型、有一个一致的信息模型、易于实现、可以基于流来处理、表达能力强扩展性好。
语法
在编写时在第一行用连续的三个-开始最后用三个点...结尾。一般都省略三个点。使用#号注释。它有严格的缩进要求不能空格和tab键混用。
三、核心组件
在一个playbook中有多个组件组成
hosts执行的远程主机列表
tasks任务集有多个task的元素组成的列表一个name只能包括一个task也是组成完整代码块的最少元素。
templates模板可替换模板文件中的变量并实现一些简单逻辑的文件。
handlers和notify结合使用由特定条件触发的操作满足条件执行不满足不执行。
tags标签指定某条任务执行用于选择运行playbook中的部分代码。
文件以yaml后缀或yml后缀习惯用yml。
四、playbook
可以通过yum安装的方式需要epel源。
yum install -y epel-release.noarch
yum install -y ansible
配置文件在/etc/ansible/下。有三个文件 [rootNode1 ansible]#:ls ansible.cfg hosts roles ansible.cfg配置文件 hosts主机 roles文件夹角色 详细解释参考上一篇文件Ansible自动化运维(1)模块
在hosts中加入[web]组有两台主机7-2和7-37-1作为ansible主控端
在ansible下创建一个test.yaml文件。ping web中的两台主机。 --- - hosts: web remote_user: root #默认就是root用户登录也可以不写 tasks: #任务 - name: ping #name就是一个描述信息。下面跟着一个执行块ping ping: 检查语法ansible-playbook --syntax-check test.yml也可以ansible-playbook -C test.yml空跑不执行。 使用ansible-playbook执行一下测试。 格式 格式 - - - hosts指定了在哪些机器上执行任务 remote_user 以谁的身份运行 tasks 任务列表你要做哪些事情 gather_facts:no 表示不收集信息但是使用变量时需要收集 例创建用户
vim add_user.yml --- - hosts: web gather_facts: no tasks: - name: create user user: name: usr1 uid: 1111 system: yes #系统用户 还可以写一行user: nameusr1 uid1111 systemyes 执行该文件ansible-playbook add_user.yml 去远端主机查看用户文件是否创建成功了 还可以指定shell类型是否允许登录shell/sbin/nologin。是否创建家目录create_homeno
删除用户usr1使用state: absent 安装httpd:
剧本编写 service是服务开启httpd服务
执行 name是描述信息执行到的哪一个剧本。
验证是否安装并开启httpd: 删除httpd 验证发现已经被删除了httpd服务。 yum安装nginx先安装依赖包
在主控端准备一个主配置文件nginx.conf和主页面index.html。 主配置文件是在本地yum下的epel源和nginx,把本地的nginx.conf复制到/data/下。 主页面是自己写一个。 [rootNode1 ansible]#:cat /data/index.html 7-1 [rootNode1 ansible]#:vim install_nginx.yml --- - hosts: web tasks: - name: add repository yum_repository: #epel源变量 name: epel description: epel yum repo baseurl: https://download.fedoraproject.org/pub/epel/$releasever/$basearch/ gpgcheck: no - name: install nginx #安装nginx yum: namenginx statepresent - name: config file #配置文件 copy: src/data/nginx.conf dest/etc/nginx/nginx.conf - name: web page #主页面 copy: src/data/index.html dest/usr/share/nginx/html/index.html - name: start nginx #开启nginx service: namenginx statestarted enabledyes 执行这个安装文件 [rootNode1 ansible]#:ansible-playbook install_nginx.yml PLAY [web] ***************************************************************************************** TASK [Gathering Facts] ***************************************************************************** ok: [192.168.114.20] ok: [192.168.114.30] TASK [add repository] ****************************************************************************** ok: [192.168.114.30] ok: [192.168.114.20] TASK [install nginx] ******************************************************************************* changed: [192.168.114.20] changed: [192.168.114.30] TASK [config file] ********************************************************************************* changed: [192.168.114.20] changed: [192.168.114.30] TASK [web page] ************************************************************************************ changed: [192.168.114.20] changed: [192.168.114.30] TASK [start nginx] ********************************************************************************* changed: [192.168.114.30] changed: [192.168.114.20] PLAY RECAP ***************************************************************************************** 192.168.114.20 : ok6 changed4 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.114.30 : ok6 changed4 unreachable0 failed0 skipped0 rescued0 ignored0 执行成功发现已启动 使用主控端访问测试 tags标签
如果当某个name没有执行成功可以在name下加入tags: page在执行的时候可以单独执行这个name块。
例如上面的yum安装nginx中最后启动的那一步写错了改回来之后只需要执行那一个角色就好了这时只要加入tags: page .... - name: start nginx #开启nginx tags: page service: namenginx statestarted enabledyes 在运行的时候指定pageansible-playbook -t page install_nginx.yml
notify和handlers:
notify监控handlers执行notify监控任务如果改变了就执行handlershandlers是与tasks同级别的缩进相同。
拿上面nginx举例我们拿复制主页那一步举例在copy下添加一个notify - name: web page #主页面 copy: src/data/index.html dest/usr/share/nginx/html/index.html notify: - restart nginx handlers: - name: restart nginx service: namenginx staterestarted 解释由于copy具有幂等性如果copy发生改变也就是index.html文件发生改变就会执行notify,- restart nginx要与handlers中的 - name: restart nginx一样。
验证
先修改两个远端服务器的一个端口添加一个端口8080
vim /etc/nginx/nginx.conf 此时如果主控端不修改index.hmtl文件。是不会执行notify的。再标注一个tags用于执行特定的任务。如图 如果copy有改变就会被notify监控到进而执行handlers。重启nginx服务就会多了个8080端口。
我们先修改index.html文件追加的方式echo 7-11 /data/index.html 执行该文件指定特定的任务加-t 可以发现成功执行执行的是page块重启了nginx。
测试是否开启了8080端口 ---end---