ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Ansible 命令模块操作

2022-08-14 17:30:49  阅读:204  来源: 互联网

标签:主机 命令 Ansible 模块 清单 com example


目录

Ansible 命令模块操作

Ansible 清单

用于管理目标主机的列表

部署 Ansible 清单文件

  • 定义清单
    • 清单定义 Ansible 将要管理的一批主机
    • 这些主机也可以分配到组中,以进行集中管理。组可以包含 子组 ,主机也可以是多个组的成员 。清单还可以设置应用到它所定义的主机和组的变量。
  • 可以通过两种方式定义主机清单
    • 静态 主机清单:静态主机清单可以通过 文本文件 来定义。
    • 动态 主机清单:动态主机清单可以根据需要使用 外部信息提供程序通过脚本或其他程序来生成

静态清单

  • 静态清单文件是指定 Ansible 目标受管主机的文本文件。可以使用多种不同的格式编写此文件,包括 INI 样式或 YAML

    YAML 格式检测: http://www.yamllint.com/

    注意 : Ansible 支持多种静态清单格式。此次仅介绍 INI 样式的格式

INI 格式

    • [section]
  • 参数
    • key = value
    • 需要注意的时 key 在 section 内通常时不能重复的,其行为是不确定的,可能会导致前者被覆盖,或直接报错;但 key 在不同的 section 中使可以重复的
  • 注释
    • 注释使用分号(;)表示。在分号后米娜的文字,知道该行结尾都全部为注释。
[ServerA]
enable = 0
port = 8080
[ServerB]
enable = 1
port = 8081
; comment text

定义嵌套组

  • Ansible 主机清单可以包含 由多个主机构成的组 。这通过创建后缀为 :children 的主机组名称来实现。
; INI 格式的清单
[dev]
servera.example.com
serverb.example.com
[test]
serverc.example.com
serverd.example.com
[balance:children]
dev
test
# YAML 格式的清单
all:
  hosts:
    mail.example.com: # 未知主机
  children:
    dev:
      hosts:
        servera.example.com:
        serverb.example.com:
    test:
      hosts:
        serverc.example.com:
        serverd.example.com:

静态清单示例

# 未定义组的主机
servera.lab.example.com
serverb.lab.example.com
serverc.lab.example.com
# 定义组的主机
[webservers]
web1.example.com
web2.example.com
192.168.2.42
# 可以通过主机名,也可以通过IP地址定义
[db-servers]
db1.example.com
db2.example.com
[balance:children]
websevers
db-servers

通过规范简化主机规格

  • 可以通过指定主机名称或 IP 地址的范围来简化 Ansible 主机清单。可以 指定数字或字母的范围
    • [START:END]
  • 范围匹配从 START 到 END(含) 的所有的值。
    • 192.168.[4:7].[0:255] 匹配 192.168.4.0/22 网络中的所有 IPv4 地址
    • server[01:20].examlpe.com 匹配名为 server01.example.com - server20.example.com 的所有主机
    • [a:c].dns.example.com
    • 2001:db8:[a:f]

验证清单

ansible [inventory] --list-hosts

  • 重要
  • 如果清单中含有名称相同的主机和主机组, ansible 命令将显示警告并以主机作为其目标、主机组则被忽略。
  • 两个主机组始终存在 all 主机组含邮费清单中明确列出的每一个主机。 ungrouped 主机组含有清单中明确列出、但不属于任何其他组的没一个主机。

覆盖清单的位置

  • /etc/ansible/hosts 文件被视为系统的 默认静态清单文件 。不过, 通常的做法是不是用该文件 ,而是在 Ansible 配置文件中为清单文件 定义一个不同位置
  • 可以通过 --inventory PATHNAME-i PATHNAME 选项命令行中指定清单文件的位置,其中 PATHNAME 是所需清单文件的路径。
  • 在清单中定义的变量
  • 可以在主机清单文件中 指定 palybook 使用的变量值 。这些变量仅应用到主机或主机组。通常, 最好在特殊目录中定义这些库存变量,而不要直接在清单文件中定义

在清单中定义变量

  • 可以在主机清单中指定 palybook 使用的变量值。这些变量经应用到特定的主机或主机组。通常,最好在特殊目录中定义这些库存变量,而不要直接在清单文件中定义

    • 主机变量

      ; INI 格式
      [atlanta]
      host1 http_port=80 maxRequstsPerChild=8080
      host1 http_port=303 maxRequstsPerChild=9090
      
      # YAML 格式
      atlanta:
        hosts;
          host1:
            http_port: 80
            maxRequstsPerChild: 8080
         host2:
            http_port: 303
            maxRequstsPerChild: 9090
      

Ansible 配置文件

包括一个名为 ansible.cfgINI 格式文件、环境变量、命令行选项、剧本关键字和变量

  • Ansible 提供了 四个来源控制它的行为 。按照优先级从 最低(最容易覆盖)最高(覆盖所有其他) 的顺序

    • Configuration settings
    • Command-line options
    • Playbook keywords
    • Variables
  • 可以在配置文件中进行更改和使用更改,该配置文件将按照一下顺序进行搜索:

    • ANSIBLE_CONFIG (environment variable if set)
    • ansible.cfg (in the home directory)
    • ~/.ansible.cfg (in the home directory)
    • /etc/ansible/ansible.cfg
  • 配置文件是 INI 格式的一种变体。当注释开始一行时, hash号(#) 和分号(

    标签:主机,命令,Ansible,模块,清单,com,example
    来源: https://www.cnblogs.com/Anzi-0524/p/16585836.html

    本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
    2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
    3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
    4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
    5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有