首页 > 其他分享 >ansible剧本-roles(2)

ansible剧本-roles(2)

时间:2023-05-11 16:00:25浏览次数:48  
标签:httpd tasks roles ansible m01 剧本 root yml

ansible剧本-roles(2)

原创 Cloud研习社 Cloud研习社 2023-05-11 07:31 发表于山东 收录于合集 #一站式教程233个 #ansible35个 #linux231个 #云计算220个 #自动化3个 图片图片

教程每周二、四、六更新

图片下面我们来实践一下:使用roles方式安装httpd服务:准备环境:先把前面练习用的文件都备份起来,/root/ansible目录下不剩余任何文件。
[root@m01 ansible]# mkdir -p roles/{httpd,haproxy}
[root@m01 ansible]# cd roles/httpd/
[root@m01 httpd]# mkdir tasks templates handlers
相应的目录结构已经按照ansible的规范建立好了,安装http的服务需要经过三步:第一步:安装httpd第二步:配置httpd配置文件第三步:启动服务这三步就是我们需要的task,动手吧:
[root@m01 httpd]# cd tasks/
[root@m01 tasks]# cat install.yml
---
- name: install pkg of httpd
  yum:
    name: httpd
    
[root@m01 tasks]# cat config_httpd.yml
---
- name: config httpd service
  template:
    src: httpd.conf.j2
    dest: /etc/httpd/conf/httpd.conf 
    
[root@m01 tasks]# cat start_service.yml
---
- name: start httpd service
  systemd:
    name: httpd
    state: started
    
# 准备需要修改的模板文件
[root@m01 tasks]# cd ..
[root@m01 httpd]# cat templates/httpd.conf.j2
ServerRoot "/etc/httpd"

Listen {{ LISTEN_PORT }}

Include conf.modules.d/*.conf

User apache
Group apache


ServerAdmin root@localhost


<Directory />
    AllowOverride none
    Require all denied
</Directory>


DocumentRoot "/var/www/html"

<Directory "/var/www">
    AllowOverride None
    Require all granted
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks

    AllowOverride None

    Require all granted
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/error_log"

LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>


    CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>


    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

</IfModule>

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule mime_module>
    TypesConfig /etc/mime.types

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz



    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

AddDefaultCharset UTF-8

<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>


EnableSendfile on

IncludeOptional conf.d/*.conf

注意:这里yml文件是放在tasks目录下的,它本身就是一个task,所以文件内容里就不需要写“tasks:”和“”- hosts:“,直接写task的名字、需要的模块即可。

task都写完了,模板也准备好了。但是对于tasks,ansible不可能知道先执行哪个,后执行哪个,所以,在main里调用的时候定义顺序就好了:

[root@m01 tasks]# cat main.yml 
---
- include: install.yml
- include: config_httpd.yml
- include: start_service.yml

最后,准备执行任务的playbook,playbook应该和roles文件夹保持平级:

[root@m01 tasks]# cd ../../..
[root@m01 ansible]# cat httpd_role.yml
---
- hosts: com
  roles:
    - role: httpd # 这里的role就是roles下的对应的目录名称

测试:

[root@m01 ansible]# ansible-playbook -C httpd_role.yml
[root@m01 ansible]# ansible-playbook httpd_role.yml

小回顾:上面这两条命令的作用分别是什么?

 


 

雷哥开通了抖音(云计算雷哥)和微信视频号,求关注!!!和大家一起学习 技术!

图片

推荐阅读

 

《一站式教程之集群架构》:

 

ansible剧本-变量的定义(2)

ansible - 模板template

ansible剧本-when

ansible剧本-循环

ansible剧本-template中的for循环和if的使用(1)

ansible剧本-template中的for循环和if的使用(2)

 

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社 为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等 188篇原创内容 公众号

图片


图片

 

Cloud研习社

赞赏二维码钟意作者

收录于合集 #一站式教程  233个 上一篇ansible剧本-roles(1) 阅读 39    

标签:httpd,tasks,roles,ansible,m01,剧本,root,yml
From: https://www.cnblogs.com/cherishthepresent/p/17391290.html

相关文章

  • Ansible-常用模块
    ping模块ping模块,这个很好理解,跟我们常用的ping命令是一样的,用来检测与目标主机的连通性[root@master~]#ansible192.168.142.45-mping192.168.142.45|SUCCESS=>{"ansible_facts":{"discovered_interpreter_python":"/usr/bin/python"},......
  • 使用Ansible实现自动化运维的一些技巧
     提示:本文要求读者有一定的Ansible使用经验   最近一年才有机会在生产环境上使用Ansible。用的过程中,想把一些小技巧记录下来,避免自己忘记。如果能帮助到其他同学就更好了。如果有同学指出有更好的方法,就更更好了。技巧1:校验你的模板文件是否正确通常我们会使用t......
  • 4.ansible常用模块03
    ansible常用模块user模块:user模块可以实现linux系统账户管理#创建用户[root@db04ansible]#ansibletest-muser-a"name=tuser1"#创建用户、用户id、用户组、家目录[root@db04ansible]#ansibletest-muser-a"name=tuser2uid=1010group=admgroups=daemon......
  • Ansible快速入门(下)
    6.Ansible常用模块ansible有着诸多的模块,虽然模块众多,但最为常用的模块也就20-30个左右;6.1command模块功能:在远程主机执行Shell命令;此为默认模块,可忽略-m选项;注意:不支持管道命令|参数选项含义chdirchdir/opt执行ansible时,切换到指定的目录creates......
  • 2.ansible常用的模块01
    1.模块?模块实际上就是脚本,是ansible调用的对象,主要是用来通过调用它去远程执行某些命令功能。2.常用的模块2.1shell模块ansible默认的模块是command,其中shell模块与command模块区别:1.command模块的命令不启动shell,直接通过ssh执行命令......
  • Ansible-受控主机配置并测试连通性
    1.Ansible配置文件[root@masterhome]#ansible--versionansible2.9.27configfile=/etc/ansible/ansible.cfgconfiguredmodulesearchpath=[u'/root/.ansible/plugins/modules',u'/usr/share/ansible/plugins/modules']ansiblepython......
  • Ansible-安装
    第一步:安装我们的epel扩展源yum-yinstallepel-release我这里会报/var/run/yum.pid已被锁定,如果没有直接进行下一步[root@masterhome]#yum-yinstallepel-release已加载插件:fastestmirror,langpacks/var/run/yum.pid已被锁定,PID为22410的另一个程序正在运行。......
  • ansible基础使用
    简述ansible是新出现的自动化运维工具,基于Python开发集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点实现了批量系统配置、批量程序部署、批量运行命令等功能,无客户端ansible是基于paramiko开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量......
  • 自动化运维工具Ansible
    一、ansible是什么?ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于paramiko开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批......
  • Ansible之playbook剧本
    1.playbook的组成playbooks本身由以下各部分组成(1)Tasks:任务,即通过task调用ansible的模板将多个操作组织在一个playbook中运行(2)Variables:变量(3)Templates:模板(4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作(5)Roles:角色2.剧本示例test12.1剧本制作 [......