zoukankan      html  css  js  c++  java
  • ansible inventory

    1、inventory文件

    1、inventory文件说明:

    目标主机的组织编排,灵活的将ad-hoc或plays传递给不同的主机。
    主机、plays较少,直接在ansible 根目录使用hosts文件即可,
    如果较为复杂,可以创建inventory文件夹,分不同inventory文件:
    1. inventory
    2. - hosts01
    3. - hosts02
    4. - test
     inventory文件的编写例子:
    1. mail.example.com
    2. [webservers]
    3. foo.example.com
    4. bar.example.com
    5. [dbservers]
    6. one.example.com
    7. two.example.com
    8. three.example.com
    9. badwolf.example.com:5309
    10. jumper ansible_ssh_port=5555 ansible_ssh_host=192.168.1.50
    11. [webservers]
    12. www[01:50].example.com
    13. [databases]
    14. db-[a:f].example.com
    15. [targets]
    16. localhost ansible_connection=local
    17. other1.example.com ansible_connection=ssh ansible_ssh_user=mpdehaan
    18. other2.example.com ansible_connection=ssh ansible_ssh_user=mdehaan
    19. [atlanta]
    20. host1 http_port=80 maxRequestsPerChild=808
    21. host2 http_port=303 maxRequestsPerChild=909
    22. [atlanta]
    23. host1
    24. host2
    25. [atlanta:vars]
    26. ntp_server=ntp.atlanta.example.com
    27. proxy=proxy.atlanta.example.com
    28. [atlanta]
    29. host1
    30. host2
    31. [raleigh]
    32. host2
    33. host3
    34. [southeast:children]
    35. atlanta
    36. raleigh
    37. [southeast:vars]
    38. some_server=foo.southeast.example.com
    39. halon_system_timeout=30
    40. self_destruct_countdown=60
    41. escape_pods=2
    42. [usa:children]
    43. southeast
    44. northeast
    45. southwest
    46. northwest

    2、inventory中的变量

    1、inventory文件中定义

    在主机之后: key=value
    inventory文件例子:
    1. some_host ansible_ssh_port=2222 ansible_ssh_user=manager
    2. aws_host ansible_ssh_private_key_file=/home/example/.ssh/aws.pem
    3. freebsd_host ansible_python_interpreter=/usr/local/bin/python
    4. ruby_module_host ansible_ruby_interpreter=/usr/bin/ruby.1.9.3
    参数说明:
    1. ansible_ssh_host
    2. 将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.
    3. ansible_ssh_port
    4. ssh端口号.如果不是默认的端口号,通过此变量设置.
    5. ansible_ssh_user
    6. 默认的 ssh 用户名
    7. ansible_ssh_pass
    8. ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass SSH 密钥)
    9. ansible_sudo_pass
    10. sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)
    11. ansible_sudo_exe (new in version 1.8)
    12. sudo 命令路径(适用于1.8及以上版本)
    13. ansible_connection
    14. 与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断'ssh' 方式是否可行.
    15. ansible_ssh_private_key_file
    16. ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.
    17. ansible_shell_type
    18. 目标系统的shell类型.默认情况下,命令的执行使用 'sh' 语法,可设置为 'csh' 'fish'.
    19. ansible_python_interpreter
    20. 目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如 *BSD, 或者 /usr/bin/python
    21. 不是 2.X 版本的 Python.我们不使用 "/usr/bin/env" 机制,因为这要求远程用户的路径设置正确,且要求 "python" 可执行程序名不可为 python以外的名字(实际有可能名为python26).
    22. ansible_python_interpreter 的工作方式相同,可设定如 ruby perl 的路径....
     

    2、引用其他文件中的变量

    在 inventory 主文件中保存所有的变量并不是最佳的方式.
    还可以保存在独立的文件中,这些独立文件与 inventory 文件保持关联. 
    不同于 inventory 文件(INI 格式),这些独立文件的格式为 YAML.
    例如:
    1. /etc/ansible/group_vars/raleigh
    2. /etc/ansible/group_vars/webservers
    3. /etc/ansible/host_vars/foosball
    4. #/etc/ansible/group_vars/raleigh
    5. ---
    6. ntp_server: acme.example.org
    7. database_server: storage.example.org
    当变量变得太多时,分文件定义变量更方便我们进行管理和组织:
    为一个主机,或一个组,创建一个目录,目录名就是主机名或组名.
    目录中的可以创建多个文件, 文件中的变量都会被读取为主机或组的变量.
    如下 ‘raleigh’ 组对应于 /etc/ansible/group_vars/raleigh/ 目录,
    其下有两个文件 db_settings 和 cluster_settings, 其中分别设置不同的变量:
    1. /etc/ansible/group_vars/raleigh/db_settings
    2. /etc/ansible/group_vars/raleigh/cluster_settings

    2、动态inventory

    使用配置管理系统经常有一种需求,可能要在其他的软件系统中保存自己的 inventory 配置信息.

    Ansible 本身通过基于文本的方式来记录 inventory 配置信息,这在前面已介绍过(详见 Inventory文件 ).

    除此之外,Ansible 也支持用其他方式保存配置信息.

    在其他软件系统保存配置信息的例子有:

    1. 1, 从云端拉取 inventory
    2. 2, LDAPLightweight Directory Access Protocol,轻量级目录访问协议)
    3. 3, `Cobbler <http://cobbler.github.com>`_
    4. 4, 或者是一份昂贵的企业版的 CMDB(配置管理数据库) 软件.

    3、pattern 与 inventory

    ad-hoc中 pattern 匹配主机例子:
    1. #命令格式如下:
    2. ansible <pattern_goes_here> -m <module_name> -a <arguments>
    3. ansible webservers -m service -a "name=httpd state=restarted"
    4. #其中的<pattern_goes_here> 还可以有以下写法匹配
    5. #所有主机
    6. all
    7. *
    8. #ip,hostname
    9. one.example.com
    10. one.example.com:two.example.com
    11. 192.168.1.50
    12. 192.168.1.*
    13. #组
    14. webservers
    15. webservers:dbservers
    16. #非
    17. webservers:!phoenix
    18. #交集
    19. webservers:dbservers:&staging:!phoenix
    20. #传参数,使用变量
    21. webservers:!{{excluded}}:&{{required}}
    22. #单个host names, IPs , groups的通配
    23. *.example.com
    24. *.com
    25. #host和group混合使用
    26. one*.com:dbservers
    27. #匹配组中的某些server
    28. webservers[0]
    29. webservers[0-25]
    30. #正则匹配
    31. ~(web|db).*.example.com
    pattern 的一些技能:
    适用于ansible和ansible-playbook
    1. #通过 --limit 标记来添加排除条件
    2. ansible-playbook site.yml --limit datacenter2
    3. #从文件读取hosts,文件名以@为前缀
    4. ansible-playbook site.yml --limit @retry_hosts.txt
     
  • 相关阅读:
    C#过滤重复数据,使用泛型
    office2007:您正试图运行的函数包含有宏或需要宏语言支持的内容。而在安装此软件时,您(或您的管理员)选择了不安装宏或控件的支持功能
    InstallShield高级应用获取本机所有的SQL服务
    结对项目
    ActiveMQ 初学1:ActiveMQ 创建连接对象
    【JVM】jstack和dump线程分析(2)
    【JVM】jstack 查询占用最大资源线程|排查死循环等
    【java多线程】volatile 关键字
    1.zookeeper原理解析数据存储之Zookeeper内存结构
    【数据算法】Java实现二叉树存储以及遍历
  • 原文地址:https://www.cnblogs.com/nineep/p/8946553.html
Copyright © 2011-2022 走看看