Linux自动化运维(Shell与Ansible)(微课版) 课件 11-3-创建和使用角色_第1页
Linux自动化运维(Shell与Ansible)(微课版) 课件 11-3-创建和使用角色_第2页
Linux自动化运维(Shell与Ansible)(微课版) 课件 11-3-创建和使用角色_第3页
Linux自动化运维(Shell与Ansible)(微课版) 课件 11-3-创建和使用角色_第4页
Linux自动化运维(Shell与Ansible)(微课版) 课件 11-3-创建和使用角色_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

角色和集合任务3:创建和使用角色目录/Contents0102创建角色目录并定义角色内容使用变量改变角色01创建并使用角色创建角色目录Ansible角色具有标准化的目录结构,可以使用标准Linux命令创建新角色所需的所有目录和文件,也可以通过ansible-galaxy命令行实用程序来自动执行新角色创建流程。基本的角色创建流程包括创建角色目录、定义角色和在Playbook中使用角色。使用ansible-galaxy命令行工具创建角色是一种快速和方便的方法。该命令可用于管理Ansible角色,包括新角色的创建、打包、发布等。运行ansible-galaxyinit命令来创建一个新角色的目录结构,将角色的名称作为参数传递给该命令,该命令将在当前工作目录中创建一个新角色的目录。在项目目录(如home/rhce/playbook/)中,创建角色主目录role。[rhce@ansibleplaybook]$pwd/home/rhce/playbook/[rhce@ansibleplaybook]$mkdirroles[rhce@ansibleplaybook]$lsansible.cfginventoryroles定义角色内容[rhce@ansibleplaybook]$catansible.cfg[defaults]inventory=./inventoryremote_user=rhceask_pass=falsehost_key_checking=Falseroles_path=./roles使用ansible-galaxyinit命令,初始化角色目录结构在ansible.cfg文件中,定义角色路径。[rhce@ansibleplaybook]$ansible-galaxyinit--init-path./roles/apache-Roleapachewascreatedsuccessfully[rhce@ansibleplaybook]$lsroles/apache/defaultsfileshandlersmetaREADME.mdtaskstemplatestestsvars[rhce@ansibleplaybook]$treeroles/apache/roles/apache/├──defaults│└──main.yml├──files├──handlers│└──main.yml├──meta│└──main.yml├──README.md├──tasks│└──main.yml├──templates├──tests│├──inventory│└──test.yml└──vars└──main.yml8directories,8files查看角色信息。[rhce@ansibleplaybook]$ansible-galaxyrolelist#/home/rhce/playbook/roles-apache,(unknownversion)创建角色目录并定义角色内容在apache/defaults目录的main.yml文件中定义要使用的变量,设置httpd的监听端口。---httpd_port:80...在apache/tasks目录的main.yml文件中编写要执行的任务,包括安装httpd、创建目录、复制配置文件和模板文件等任务。----name:Installhttpdyum:name:httpdstate:latest...-name:indexhtmlfileisinstalledtemplate:src:index.html.j2dest:/var/www/html/index.htmlowner:apachegroup:apachenotify:-Restarthttpd创建角色目录并定义角色内容在apache/handlers目录的main.yml文件中定义处理程序,重启httpd服务。----name:Restarthttpdservice:name:httpdstate:restarted在apache/templates目录中,创建一个名为index.html.j2的Jinja2模板文件。[rhce@ansibleplaybook]$catroles/apache/templates/index.html.j2Welcometo{{ansible_facts['fqdn']}}on{{ansible_facts['default_ipv4']['address']}}在Playbook中使用角色,编写deployapache.yml脚本,调用apache角色执行自动化任务。[rhce@ansibleplaybook]$vimdeploy_apache.yml----name:useapacheroleplaybookhosts:webroles:-apache[rhce@ansibleplaybook]$ansible-playbookdeploy_apache.yml02使用变量改变角色使用变量改变角色编写良好的角色并利用默认变量来改变角色行为,使之与相关的配置场景相符,这有助于让角色变得更为通用,可在各种不同的上下文中重复利用。如果通过以下方式定义了相同的变量,则角色的defaults目录中定义的变量的值将被覆盖。在角色默认变量文件中定义变量,在web_server角色defaults/main.yml文件中定义了一个名为system_owner的变量。①在清单文件中定义,作为主机变量或组变量。②在Playbook项目的group_vars或host_vars目录下的YAML文件中定义。③嵌套在play的vars关键字中定义。④在play的roles关键字中包含该角色时定义。#roles/web_server/defaults/main.ymlsystem_owner:root如果在Playbook的group_vars或host_vars目录下的YAML文件中重新定义了system_owner变量,那么在应用角色时,该变量的值将被覆盖为新定义的值。#playbook/group_vars/all.ymlsystem_owner:rhce使用变量改变角色在Playbook的vars关键字中定义变量,使用vars关键字或在包含角色的play的roles关键字中定义变量来覆盖角色的默认值。----name:ExamplePlaybookhosts:allvars:system_owner:someone@roles:-role:web_serverexample_var:"{{system_owner}}"在上述示例中,变量system_owner会被定义并传递给web_server角色,以便在角色中使用。这个变量的优先级最高,将覆盖其他相同变量的定义。web_server角色中的example_var变量的默认值将被覆盖为someone@。使用变量改变角色在Playbook的roles关键字中定义变量-name

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论