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

内蒙古工程建设协会网站企业网站建设版本

内蒙古工程建设协会网站,企业网站建设版本,泉州网站模板建站,辽宁省大学生创新创业平台文章目录 在议playbook虚拟环境中安装ansibleplaybook 结合变量的一些演示普通的vars_files 变量#xff0c;在同级目录创建目录使用host_vars 定义变量group_vars定义变量根据不同系统操作不同版本传递多个外置变量举例几个不同的示例factswhenloophandlers 与 notifytags 任… 文章目录 在议playbook虚拟环境中安装ansibleplaybook 结合变量的一些演示普通的vars_files 变量在同级目录创建目录使用host_vars 定义变量group_vars定义变量根据不同系统操作不同版本传递多个外置变量举例几个不同的示例factswhenloophandlers 与 notifytags 任务标签异常处理nginx 的异常处理 jinja2roles 在议playbook 主要是使用不同的模块进行编排 如果格式有问题找chatgpt调整下格式输出就可以 缺点是比较死板不能成体系 虚拟环境中安装ansible 要在CentOS 7系统上让Ansible使用Python 3你可以按照以下步骤进行操作确认你的CentOS 7系统已安装Python 3。你可以通过在终端中运行python3 --version命令来检查是否已安装Python 3。安装Python 3的pip包管理工具。在CentOS 7上你可以使用以下命令安装sudo yum install python3-pip 安装python3-devel软件包以支持Python 3的开发库。运行以下命令进行安装 sudo yum install python3-devel 创建一个Python 3虚拟环境可选。虚拟环境可以帮助你隔离Ansible所需的Python包与系统级安装的Python包。使用以下命令创建虚拟环境 python3 -m venv ansible-env 激活虚拟环境source ansible-env/bin/activate 安装Ansible和所需的Python包。在虚拟环境中运行以下命令 pip install ansible 配置Ansible以使用Python 3。打开/etc/ansible/ansible.cfg文件并找到以下行 # interpreter_python auto_silent 取消注释并将其更改为以下内容interpreter_python /usr/bin/python3 确认Ansible使用Python 3。运行以下命令来检查 ansible --versionplaybook 结合变量的一些演示 普通的vars_files 变量在同级目录创建目录 - hosts: webserversvars_files:- ./test.ymltasks:- name: Output Varsdebug:msg:- {{ http_packages }}- {{ db_packages }}$cat test.yml test: ansible_vars_files http_packages: 123 db_packages: 123r返回结果{msg: [123,null] } 注意 test.yml 一定要有这个变量哪怕为空否则报错test.yml 可以被多个playbook 引用vars_files:- ./test.yml 使用host_vars 定义变量 hosts 配置文件为 [webservers] 1.1.1.1 aaa2 bbbmaster[webservers:vars] port80--- - hosts: webserverstasks:- name: output variablesdebug:msg: {{ aaa }} {{ bbb }} {{ port }} {msg: 2 master 80 } group_vars定义变量 在项目目录中创建 group_vars 目录然后在创建一个文件文件的文件名称要与 inventory 清单中的组名称保持完全一致在 group_vars 目录中创建 webservers 文件为 webservers 主机组设定变 量msg: [11,22] }$cat group_vars/all web: 11 web1: 22 (ansible-env)$cat t5.yml - hosts: webserverstasks:- name: Output Vaiablesdebug:msg:- {{ web }}- {{ web1 }} 根据不同系统操作不同版本 注意 www 用户是有sudo 权限 --- - hosts: webserversbecome: yesbecome_user: wwwtasks:# 通过fact变量判断系统为centos才会安装httpd- name: Centos Install httpdyum: namehttpd statepresentwhen: (ansible_distribution CentOS)# 通过fact变量判断系统为ubuntu才会安装httpd2- name: Ubuntu Install httpdyum: namehttpd2 statepresentwhen: (ansible_distribution Ubuntu) 传递多个外置变量 ansible-playbook f5.yml -i hosts -e web_packagesGeoIP -e ftp_packagestelnet举例几个不同的示例 - hosts: alltasks:- name:shell: netstat -lntpregister: System_Status- name: Get System Statusdebug: msg{{System_Status.stdout_lines}} - hosts: webserverstasks:- name: Output variables ansible factsdebug:msg: this default IPv4 address {{ ansible_fqdn}} is {{ ansible_default_ipv4.address }}- hosts: alltasks:- name: Ignore Falsecommand: /bin/falseignore_errors: yes- name: touch new filefile: path/tmp/old statetouch facts 用来采集客户端信息 ansible localhost -m setup -a filteransible_default_ipv4when when 判断在 Ansible 中的使用频率非常高比如 yum 模块可以自动检测软件包是 否已被安装而无需人为干涉但对于有些任务则是需要进行判断才可以实现的。 比如 web 节点都需要配置 nginx 仓库但其他节点并不需要此时就会用到 when 判断。 比如: Centos 与 Ubuntu 都需要安装 Apache 而 Centos 系统软件包为 httpd 而 Ubuntu 系统软件包为 httpd2 那么此时就需要判断主机系统然 后为不同的主机系统安装不同的软件包。hen: (ansible_hostname is match(web*)) 主机名不为web的不做任何处理 loop loop 是重复 - hosts: web tasks: - name: Add Users user: name: {{ item.name }} groups: {{ item.groups }} state: present loop: - { name: testuser1, groups: bin } - { name: testuser2, groups: root }- hosts: all tasks: - name: Configure Rsync Server copy: src{{ item.src }} dest/etc/{{ item.dest }} mode{{ item.mode }} with_items: - {src: rsyncd.conf, dest: rsyncd.conf, mode: 0644} - {src: rsync.passwd, dest: rsync.passwd, mode: 0600}handlers 与 notify Handlers 是一个触发器同时是一个特殊的 tasks 它无法直接运行它需要被 tasks 通知后才会运行。比如 httpd 服务配置文件发生变更我们则可通过 Notify 通知给指定的 handlers 触发器然后执行相应重启服务的操作如果配 置文件不发生变更操作则不会触发 Handlers 任务的执行如果配置文件发生变化会调用该handlers下面的对应名称的task handlers:- name: Restart Httpd Serverservice: namehttpd staterestartedhandlers 注意事项 1.无论多少个 task 通知了相同的 handlers handlers 仅会在所有 tasks 结束后运行一次。 2.只有 task 发生改变了才会通知 handlers 没有改变则不会触发 handlers 3.不能使用 handlers 替代 tasks 、因为 handlers 是一个特殊的 taskstags 任务标签 默认情况下 Ansible 在执行一个 playbook 时会执行 playbook 中所有的任 务。而标签功能是用来指定要运行 playbook 中的某个特定的任务 1.为 playbook 添加标签的方式有如下几种 对一个 task 打一个标签 对一个 task 打多个标签 对多个 task 打一个标签 2. task 打完标签使用的几种方式 -t 执行指定tag标签对应的任务 --skip-tags 执行除 --skip-tags 标签之外的所有任务ansible-playbook --skip-tags install_server xxx.yml标签结合include [rootansible ~]# cat main.yml - hosts: localhost tasks: - name: Installed Tomcat8 Version include: install_tomcat8.yml tags: tomcat8 - name: Installed Tomcat9 Version include: install_tomcat9.yml tags: tomcat9异常处理 - hosts: webserverstasks:- name: configure httpd servertemplate:src: ./httpd.conf.j2dest: /etc/httpd/conf/httpd.confnotify: Restart Httpd Server- name: Check HTTPDshell: /usr/sbin/httpd -tregister: httpd_checkfailed_when: httpd_check.rc ! 0 or OK not in httpd_check.stdout- name: start httpd serverservice:name: httpdstate: startedenabled: yeshandlers:- name: Restart Httpd Serversystemd:name: httpdstate: restarted nginx 的异常处理 - hosts: webservertasks:- name: Install Nginx Serveryum:name: nginxstate: present- name: Configure Nginx Servertemplate:src: ./nginx.conf.j2dest: /etc/nginx/nginx.confnotify: Restart Nginx Server- name: Check Nginx Servershell: /usr/sbin/nginx -tregister: check_nginxchanged_when: successful in check_nginx.stdout- name: Start Nginx Serverservice:name: nginxstate: startedenabled: yeshandlers:- name: Restart Nginx Serversystemd:name: nginxstate: restarted在这个标准格式的 Playbook 中我们在hosts中指定了目标主机组并定义了多个任务。每个任务都有一个名称以及对应的模块和参数。要解决场景1即要求每台主机的端口都不一样可以在 Jinja2 模板文件 (nginx.conf.j2) 中使用变量来动态设置端口号。例如可以通过定义一个名为nginx_port的变量并在模板文件中使用它来设置 Nginx 的监听端口。要解决场景2即使用 Jinja2 模板来修改被管理主机的配置文件我们使用了template模块。该模块会将指定的模板文件复制到远程主机并在复制过程中解析文件中的变量值。在Check Nginx Server任务中我们使用了changed_when来定义任务的改变条件。只有当检查 Nginx 配置的输出中包含successful时任务才会被标记为已改变。最后在处理程序部分我们定义了一个名为Restart Nginx Server的处理程序它会在被通知时使用systemd模块重启 Nginx 服务。请注意Ansible Playbook 的格式要求严格正确的缩进和符号使用非常重要。以上提供的输出已经按照标准格式进行了调整。jinja2 Jinja2 是 Python 的全功能模板引擎 Ansible 需要使用 Jinja2 模板来修改被管理主机的配置文件。 ansible 使用 jinja2 模板需要借助 template 模块实现那 template 模块是用 来做什么的? template 模块和 copy 模块完全一样都是拷贝文件至远程主机区别在于 template 模块会解析要拷贝的文件中变量的值而 copy 则是原封不动的将文件拷 贝至被控端。roles 更加规范更加标准的去灵活安排你维护的业务
http://www.yutouwan.com/news/375626/

相关文章:

  • 加强公司门户网站建设方案网站商城建设员招聘信息
  • 深圳网站开发公司淘宝联盟推广网站怎么做
  • 过年做啥网站能致富德阳定制建站网站建设制作
  • 如何查看网站是用什么模板做的临沂建设网站
  • 网站底部备案图标摄影婚纱官网
  • 新余 网站建设网站建设广告合同需要交印花税吗
  • 外包网络推广公司推广网站什么网站可以自己做配图
  • 番禺网站 建设信科网络wordpress安装好怎么设置密码
  • 公司做网站计入那个科目宝山苏州网站建设
  • 全网vip影视自助建站系统wordpress 主题页脚
  • wordpress chrome插件枣庄seo外包
  • 做网站软件排名金融服务网站建设
  • google 网站突然一条收录也没有浙江建设继续教育学院网站
  • 上海建设网站费用网站建设用哪个好
  • c2c电子商务网站用到的技术连云港企业做网站
  • 三亚市住房和城乡建设厅网站南昌seo网站开发
  • 顺德网站建设公司价位店招在线制作免费
  • 嘉兴提高网站排名官网下载软件
  • 网页设计师主要是做什么网站开发使用api对seo
  • 中国建设的网站介绍小说的网站模板下载
  • 桐庐做网站两学一做 网站源码
  • 个人网站怎么做代码国外php网站源码
  • 苏州网站建设制作服务商图片制作在线生成器免费版
  • 重庆做网站建设公司上海建设厅网站首页
  • 阿里网站如何做接入鄂州网站建设推广报价
  • 网站开发商城市场调研分析报告
  • 福州网站制作公司个人网站命名
  • 长春建站模板厂家建设网站商城后台系统
  • 网站建设注意哪些注意事项如何建立一个自己的网站?
  • 网站开发课题背景运城市住房与城乡建设厅网站