当前位置: 首页 > news >正文

河南住房建设部网站青岛网络优化厂家

河南住房建设部网站,青岛网络优化厂家,企业网站建设可行性分析表,中国公司网站建设方案前言 上篇介绍了 Ansible 单模块#xff08;AD-Hoc#xff09;的相关内容Ansible自动化运维Inventory与Ad-Hoc-CSDN博客#xff0c;Ad-Hoc 命令是一次性的、即时执行的命令#xff0c;用于在远程主机上执行特定任务#xff0c;这些命令通常用于快速执行简单的任务。当需要…前言 上篇介绍了 Ansible 单模块AD-Hoc的相关内容Ansible自动化运维Inventory与Ad-Hoc-CSDN博客Ad-Hoc 命令是一次性的、即时执行的命令用于在远程主机上执行特定任务这些命令通常用于快速执行简单的任务。当需要在执行多个任务、配置复杂场景或需要可重复使用操作时就需要用到任务剧本Playbook来定义复杂的任务流程和处理重复执行的操作。 Playbook 也通常被大家翻译成剧本。可以认为它是 Ansible 自定义的一门语言(可以将 Playbook 比作 Linux 中的 shell而 Ansible 中的 Module 可以比作为 Linux 中的各种命令。 目录 前言 一、YAML 非标记语言 1. 概述介绍 2. Yaml 特点 3. 基本语法 3.1 字符串 3.2 列表 3.3 字典 3.4 混合结构  3.5 验证YAML语法 二、Playbook 1. Paly 的定义 2. Play 属性  3. tasks 属性中任务的多种写法 4. 具有多个 Play 的格式 5. Playbook 校验与执行 5.1 语法检验 5.2 列出任务 5.3 列出主机 5.4 单步跟重调试  5.5 测试运行 5.6 执行 6. 编写 Playbook 7. Handlers 组件 一、YAML 非标记语言 1. 概述介绍 YAMLYAML Aint Markup Language 是一种人类可读的数据序列化格式常用于配置文件和数据传输。它以缩进、换行和符号结构来表示数据具有简洁、清晰的特点。YAML 旨在成为一个易于阅读和编写的数据格式同时也适合机器解析和生成。它使用空格缩进来表示层级关系不需要显式的标记符号如 XML 或 JSON 中的尖括号或大括号这使得它更加直观和易读。 YAML 官方网站The Official YAML Web Site Ansible 官网YAML Syntax — Ansible Documentation 2. Yaml 特点 YAML文件 以 #为注释符以 .yml 或者 .yaml 结尾以 --- 开始以 ... 结束但开始和结束标志都是可选的 3. 基本语法 大小写敏感使用缩进表示层级关系缩进时是使用Tab键还是使用空格一定要达到统一建议使用空格相同层级的元素必须左侧对齐即可 YAML 支持的数据结构有三种 字符串列表字典 3.1 字符串 --- # YAML 中的字符串可以不使用引号即使里面存在空格的时候当然了使用单引号和双引号也可以 this is a string this is a string this is a string # YAML 中若一行写不下要表述的内容可以进行折行。写法如下: long line: | Example 1 Example 2 Example 3 # 或者 long line: Example 1 Example 2 Example 3 ... 3.2 列表 在 YAML 中列表使用短横线 - 表示后面跟着一个空格。列表可以包含任意类型的元素例如字符串、数字、布尔值或者其他嵌套的列表。 --- #可以认为它就是 python 中的 List可以认为它是 c 语言中的数组。 # 如何定义:以短横线开头 空格 具体的值 - red - green - blue # 以上的值假如转换成 python 的 List 会是这样: # [red, green, blue] ... 3.3 字典 字典在 YAML 中使用键值对的形式表示使用冒号 : 将键和值分隔开键值之间需要有一个空格。字典可以包含嵌套的字典或者列表作为值。 --- # 可以认为它就是 python 中的 Dict # 如何定义key 冒号(:) 空格 值(value)即 key:value name: Using Ansible code: D1234 #转换为 python 的 Dict #{name: Using Ansibel,code: D1234} ... 3.4 混合结构  但在日常生产中往往需要的数据结构会特别复杂有可能会是字符串、列表、字典的组合形式。这里举一个例子学校里是以班级为单位。我们去使用列表和字典的形式去描述一个班级的组成。 --- class:- name: stu1num: 001- name: stu2num: 002- name: stu3num: 003 #{class: [{name: stul, num: 1},{name: stu2, num: 2), ...]} ... 3.5 验证YAML语法 //将 YAML 文件通过 Python 的 YAM 模块验证若不正确则报错。若正确则会输出 YAML 里的内容。 //注意使用时一定确保安装了 yaml 软件包 python -c import yaml,sys; print yaml.load(sys.stdin) myyaml.yml python3 -c import yaml,sys; print(yaml.load(sys.stdin)) myyaml.yml 示例 # cat myyaml.yml --- - red - geen - blue ... #python -c import yaml,sys; print yaml.save_load(sys.stdin) myyaml.yml [red, green, blue] 在 Ansible Playbooks 中列表和字典通常用来定义变量、任务、主机清单等信息。它们提供了一种直观且易读的方式来表示复杂的数据结构使得编写和维护 Playbooks 更加方便和直观。 二、Playbook 1. Paly 的定义 由于 playbook 是由一个或者多个 play 组成,如何定义一个 play 呢 1、每一个 play 都是以短横杠开始的 2、每一个 play 都是一个YAML 字典格式 格式结构 --- - keyl: value1 - key2: value2 - key3: value3 ... 多个Play结构 --- - keyl: value1key2: value2key3: value3 - key4: value1key5: value2key6: value3 - key7: value1key8: value2key9: value3 ... 2. Play 属性  Play 中的每一个 key比如 key1key2 等这些 key 在 PlayBook 中被定义为 Play 的属性。 这些属性都具有特殊的意义我们不能随意的自定义 Play 的属性。 常用属性 name 属性每个play的名字hosts 属性每个play涉及的被管理服务器同 ad-hoc 中的资产选择器tasks 属性每个play 中具体要完成的任务以列表的形式表达become 属性如果需要提权则加上become相关属性becomekuser 属性若提权的话提权到哪个用户上remote_user 属性指定连接到远程节点上的用户即远程服务器上执行操作的用户。若不指定则默认使用当前执行 ansible Playbook 的用户 3. tasks 属性中任务的多种写法 # 以启动 apache 服务并增加开机启动为例 #一行的形式: service: nameapache enabledtrue statestarted #多行的形式: sefvice: nameapacheenabledtruestatestarted #多行写成字典的形式: service:name: apacheenabled: truestate: started 4. 具有多个 Play 的格式 --- - name: manage web servershosts: webserverremote_user: roottasks :- name: install apache packageyum: namehttpd statepresent- name: copy apache confcopy: src./httpd.conf dest/etc/httpd/conf/httpd.conf- name: ensure apache is running start nginx serverservice: service: namehttpd statestarted enabledyes- name: manager db servershosts: dbserverstasks:- name update database confgcopy :srcmy.cnf dest/etc/my.cnf ... 5. Playbook 校验与执行 5.1 语法检验 ansible-playbook apache.yaml --syntax-check 5.2 列出任务 ansible-playbook apache.yaml --list-tasks 5.3 列出主机 ansible-playbook apache.yaml --list-hosts 5.4 单步跟重调试  执行 tasks 中的任务需要手动确认是否往下执行。 ansible-playbook apache.yaml --step 5.5 测试运行 会执行完整的 Playbook但是所有 task 中的行为都不会在远程被管理节点服务器上执行所有的操作都是模拟。 ansible-playbook apache.yaml --C #大写的C 5.6 执行 ansible-playbook apache.yaml 6. 编写 Playbook 批量安装apache ① 准备工作卸载目标主机网站服务 管理节点 [rootansible ~]# ansible all -m yum -a namehttpd stateremoved #在Ansible中all是一个用于指代所有主机的特殊关键字。当你在使用Ansible命令时使用all会将命令应用到所有已定义的主机上。卸载httpd相关服务。被管理节点 [rootlocalhost ~]# yum list | grep httpd | grep httpd-tools.x86_64 2.4.6-99.el7.centos.1 updates #检查是否还有安装httpd相关包。管理节点 [rootansible ~]# ansible all -m yum -a namehttpd-tools stateremoved #卸载httpd工具包避免影响安装httpd。管理节点 [rootansible ~]# yum install -y httpd #Ansible服务器安装网站服务 [rootansible ~]# mkdir apache [rootansible ~]# cd apache/ [rootansible apache]# cp -rf /etc/httpd/conf/httpd.conf . ② 编写剧本 [rootansible apache]# vim apache.yaml - hosts: webserver #针对的剧本对象tasks: #任务- name: install apache packages #任务1安装apache包可以自定义yum: namehttpd statepresent #调用yum安装模块httpdpresent表示确保软件包已经安装- name: copy apache conf #任务2拷贝apache配置文件copy: src./httpd.conf dest/etc/httpd/conf/httpd.conf #调用拷贝模块源——目标- name: ensure apache is running #确保apache服务已运行service: namehttpd statestarted enabledyes #调用系统服务状态模块 ③ 检查测试 [rootansible apache]# ansible-playbook apache.yaml --syntax-check #检验语法playbook: apache.yaml [rootansible apache]# ansible-playbook apache.yaml --list-tasks #列出任务playbook: apache.yamlplay #1 (webserver): webserver TAGS: []tasks:install apache packages TAGS: []copy apache conf TAGS: []ensure apache is running TAGS: [] [rootansible apache]# ansible-playbook apache.yaml --list-hosts #列出主机playbook: apache.yamlplay #1 (webserver): webserver TAGS: []pattern: [uwebserver]hosts (4):host4host3host2host1④ 执行剧本 [rootansible apache]# ansible-playbook apache.yamlPLAY [webserver] ************************************************************************************************TASK [Gathering Facts] ****************************************************************************************** ok: [host2] ok: [host3] ok: [host1] ok: [host4]TASK [install apache packages] ********************************************************************************** changed: [host2] changed: [host1] changed: [host4] changed: [host3]TASK [copy apache conf] ***************************************************************************************** ok: [host2] ok: [host3] ok: [host1] ok: [host4]TASK [ensure apache is running] ********************************************************************************* changed: [host2] changed: [host1] changed: [host4] changed: [host3]PLAY RECAP ****************************************************************************************************** host1 : ok4 changed2 unreachable0 failed0 skipped0 rescued0 ignored0 host2 : ok4 changed2 unreachable0 failed0 skipped0 rescued0 ignored0 host3 : ok4 changed2 unreachable0 failed0 skipped0 rescued0 ignored0 host4 : ok4 changed2 unreachable0 failed0 skipped0 rescued0 ignored0 7. Handlers 组件 在 Playbook 中Handlers 通常会在任务中触发并在整个 Playbook 运行结束时才会执行。 示例修改管理节点apace配置文件模板拷贝到被管理节点查看apache相关信息 ① 修改管理几点服务器apache监听端口号执行剧本查看被代理节点服务器配置是否拷贝 [rootansible ~]# yum install -y httpd #Ansible服务器安装网站服务 [rootansible ~]# mkdir apache [rootansible ~]# cd apache/ [rootansible apache]# cp -rf /etc/httpd/conf/httpd.conf . [rootansible apache]# sed -i s/Listen 80/Listen 8080/ httpd.conf ② 查看被代理节点apache配置文件已及更新但是并没有生效 ③ 由于剧本服务模块指令是启动需要定义、引用处理程序 注意如果将 statestarted 改为 restart 将会导致每次执行剧本都会重启 apache 服务。 [rootansible apache]# vim apache.yaml - hosts: webserver #定义了将要执行任务的目标主机或主机组tasks:- name: install apache packages #对Playbook的描述用于标识该Playbook的作用。yum: namehttpd statepresent- name: copy apache confcopy: src./httpd.conf dest/etc/httpd/conf/httpd.confnotify: restart apache service #通知当copy模块产生改变通知程序重启需要与handlers的name一样 #应用处理程序- name: ensure apache is runningservice: namehttpd statestarted enabledyeshandlers: #当任务触发会执行 #定义处理程序- name: restart apache service #任务重启apache名字自定义service: namehttpd staterestarted ④ 再次修改管理节点 apachep 配置文件端口号执行剧本查看被代理节点 apache 端口信息
http://www.pierceye.com/news/627467/

相关文章:

  • 360°网站标签旋转显示特效建筑设计专业比较好的学校
  • 郫县建设局网站中文wordpress模版
  • 塔里木油田公司档案馆网站建设研究响应式网站建设教程
  • wordpress侧边栏怎么加php代码重庆seo优化公司
  • 自做建材配送网站做的比较好的游戏网站
  • 建设网站公司兴田德润在哪里秦皇岛海港区
  • 做网站阜阳百度投放广告
  • 北京互联网金融公司排名网站栏目优化
  • 教育网站解决方案用wordpress制作表单
  • 整站wordpress下载phpcms 网站标题
  • 湛江市建设局官网站品牌网络营销方法分析
  • 做网站数据库表各字段详情福建省港航建设发展有限公司网站
  • 潍坊 营销型网站建设游戏设计师网站有哪些
  • 用花生棒做网站快吗大型网站开发合同
  • 网站建设什么原因最主要wordpress mu安装
  • 龙岗网站设计公司价格wordpress商品属性选择
  • 企业网站如何优化足球比方类网站开发
  • 大型网站开发 优帮云公司制度建设的意义
  • 收录网站工具沈阳高端网站定制
  • 做网站哪家比较好网站网页翻页设计
  • 湖州建设网站制作手机网站登录模板
  • 重庆网站制作技术wordpress获取特定尺寸特征图像
  • 展示型网站建设标准网络组建视频
  • 怎么用wordpress建手机网站网络管理网站策划书
  • 网站空间位置河南郑州百姓网
  • 云服务器可以用来做网站么网站建设短期培训
  • 做网站的费属于什么费用昆山智能网站开发
  • 西安网站制作南昌公司企业微信app下载安装官方版
  • 网站建设情况总结个人静态网页学生作业
  • 手机网站一键分享到微信asp.net ftp发布网站