ansible学习笔记(二)

本文详细介绍了Ansible的使用,包括task的定义,如service和command模块的使用,以及如何处理返回码信息。还讨论了handlers的最佳实践,如重启服务。此外,文章讲解了ansible-pull的概念,用于从git仓库拉取配置。接着阐述了include语句和playbook角色(roles)的用法,以及变量的定义、优先级和fact缓存。最后,提到了条件选择的when语句和注册变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1.task定义:

   基本的service moudle使用的是key=value的格式: 

         例如: task:

              -name:make sure apache is running

                service:name=httpd state=running

   但是command moudle和 shell moudle 比较特殊,不用key=value 格式,

         例:  task:

            -name:disble selinux

            command:/sbin/setenforce

对于这两个moudle 我们更关心它的返回码信息

若action行看起来太长,我们可以用空格或者缩进来进行隔开

在action 中可以使用变量

 

  2.handlers:

   handlers最佳应用场景是重启服务器或者触发系统重启操作。

      例: handlers:

          name:restart memcached

          service: name=memcached state=restarted

  3.ansible-pull:拉取配置而非推送配置

    ansible-pull 是一个小脚本,它从git上checkout一个关于配置的指令的repo,然后以这个配置指令来运行ansible-playbook

    假设对checkout location 做负载均衡,ansible-pull基本可以无限的提升规模

  4.include 语句和 playbook角色(roles)

    include(我理解的是约等于import),就是引用某个文件抽象出来的可将一个playbook文件导入另外一个playbook文件中,这种方式允许定义一个顶层的playbook,这个顶层的playbook有其playbook组成

   在playbook中使用其他playbook时不能使用其他变量替代。

   Roles:Roles基于一个已知的文件结构,去自动加载某些vars_files,tasks,以及handlers,基于roles对内容进行分组,使得我们可以容易地与其他用户分享roles

   在playbook中同时使用roles,和tasks,vars_files,或者handlers,roles会优先执行

   角色默认变量: 要创建默认变量,需要在roles目录下,添加defaults/main.yml文件,这些变量在所有可用变量中拥有最低优先级,可能被其他地方东哟的变量所覆盖

   5.variables:变量

     变量名:字母,数字,下划线排列组合。

     在playbook中定义变量: -hosts:webservers

                 vars:

                    http_port:80

     fact缓存:从一个服务器引用另一个服务器的变量。使用fact缓存可以跨群组访问变量。有两种持久的缓存插件:redis和jsonfile。在ansible.cfg文件中配置fact缓存使用redis,把gathering设置为“smart”,或者“explicit”也可以设置“gather_facts”为“false”

     变量的优先级:

       若相同名称的变量在多个地方都有定义,那么采用的有限顺序为:

          ①extra vars 优先级最高

          ②在Inventory中定义的连接变量

          ③大多数的其他变量(比如在命令行转换play中的变量,include中的变量,role中的变量)

          ④在inventory定义的其他变量

          ⑤在由系统发现的facts

          ⑥role默认值,这是最默认的值,很容易丧失优先级

   6.条件选择

     when语句:有时候用户有可能需要某一个主机越过某一个特定的步骤,就用when(我理解的就是条件判断是否执行)

     •想查看哪些时间在某个特定系统中允许的,可以执行命令:ansible hostname.example.com -m setup

    注册变量用register关键字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值