首页 > 其他分享 >ansible简单使用之inventory文件(主机清单)

ansible简单使用之inventory文件(主机清单)

时间:2023-07-12 18:14:41浏览次数:53  
标签:主机 默认 ansible inventory 设置 清单 ssh

ansible简单使用之inventory文件(主机清单)

ansible inventory文件是干什么的

  • 一般称ansible inventory文件为ansible主机清单

  • ansible inventory文件定义了ansible需要操作的远程机器的信息,默认路径是/etc/ansible/hosts,也可以在命令行使用 -i <path> 指定路径。

  • inventory文件支持多种格式,常用的是INI格式和YAML格式

主机清单定义

我比较喜欢INI格式,下面就只记录INI格式的笔记了

  • 可以直接写在文件中,表示不属于任一组

  • 也可以通过[]指定所属的组

  • 一个被控机器可以属于多个组

  • 默认组

    默认有两个分组: all and ungroupedall 组顾名思义包括所有主机。 ungrouped 则是 all 组之外所有主机。所有的主机要不属于 all 组,要不就属于 ungrouped 组。

    尽管 allungrouped 始终存在,但它们以隐式的方式出现,而不出现在诸如 group_names 的组列表中。

例子:

#直接写IP或者hostname 默认属于Ungrouped组 但Ungrouped不会显式的写在文件中,只是隐式存在
green.example.com
blue.example.com
192.168.100.1
192.168.100.10

;属于webservers组的机器可以这么写
[webservers]
alpha.example.org
beta.example.org
192.168.1.100
192.168.1.110

# 有规律的主机名可以这么写
[webservers2]
www[001:006].example.com

;属于dbservers组的机器可以这么写
[dbservers]
db01.intranet.mydomain.net
db02.intranet.mydomain.net
10.25.1.56
10.25.1.57
                       
# 有规律的主机名可以这么写
[dbservers2]
db-[99:101]-node.example.com
  • 可以把组作为另一个组的子成员

例子

;atlanta组包含host1和host2
[atlanta]
host1
host2

;raleigh组包含host2和host3
[raleigh]
host2
host3

;southeast组包括atlanta组和raleigh组,即host1和host2和host3
[southeast:children]
atlanta
raleigh

;usa组包括southeast组和northeast组和southwest组和northwest组
[usa:children]
southeast
northeast
southwest
northwest

主机变量

每个主机可以通过传递变量,在编写playbooks时使用

  • 可以直接写在主机IP或者hostname后面,仅供主机使用
[atlanta]
host1 http_port=80 maxRequestsPerChild=808
host2 http_port=303 maxRequestsPerChild=909
  • 可以通过:var定义组的变量,组的变量可以供组内主机使用
[southeast]
atlanta
raleigh

[southeast:vars]
some_server=foo.southeast.example.com
halon_system_timeout=30
self_destruct_countdown=60
escape_pods=2
  • 把所有的变量都写在inventory中,看起来很臃肿,可以通过文件指定变量

假设 inventory 文件的路径为:

/etc/ansible/hosts

假设有一个主机名为 ‘foosball’, 主机同时属于两个组,一个是 ‘raleigh’, 另一个是 ‘webservers’. 那么以下配置文件(YAML 格式)中的变量可以为 ‘foosball’ 主机所用.依次为 ‘raleigh’ 的组变量,’webservers’ 的组变量,’foosball’ 的主机变量:

/etc/ansible/group_vars/raleigh
/etc/ansible/group_vars/webservers
/etc/ansible/host_vars/foosball

group_vars目录下对应的就是组的变量

host_vars目录下对应就是host的变量

文件可以以’.yml’, ‘.yaml’, ‘.json’ 结尾,甚至没有扩展结尾。

inventory的内置参数

  • ansible_connection

    连接受控主机的方式. 填写 ansible 连接的插件名字,如 smart, ssh or paramiko. 默认: smart.

  • ansible_host

    要连接的主机名,如果与您要给它提供的别名不同。

  • ansible_port

    连接端口,默认22

  • ansible_user

    连接远程主机的用户

  • ansible_password

SSH 连接选项:

  • ansible_ssh_private_key_file

    指定 ssh 私钥。

  • ansible_ssh_common_args

    这个设置通常添加在默认命令行 sftp, scp and ssh 之后。 当为一台主机或组配置 ProxyCommand 时有用。

  • ansible_sftp_extra_args

    此设置始终附加在默认的 sftp 命令行中。

  • ansible_scp_extra_args

    此设置始终附加在默认的 scp 命令行中。

  • ansible_ssh_extra_args

    此设置始终附加在默认的 ssh 命令行中。

  • ansible_ssh_pipelining

    设置是否使用 SSH 管道,可以在 ansible.cfg 设置

  • ansible_ssh_executable (added in version 2.2)

    此设置将覆盖默认行为以使用系统 ssh。 这样会覆盖 ansible.cfg 文件中的 ssh_executable 设置

提权设置 ( 更多请参考 Ansible Privilege Escalation ):

  • ansible_become

    等同 ansible_sudo or ansible_su, 允许强制特权升级

  • ansible_become_method

    允许设置权限提升方法

  • ansible_become_user

    等同 ansible_sudo_user or ansible_su_user, 允许设置通过特权升级成为的用户

  • ansible_become_password

    等同 ansible_sudo_password or ansible_su_password, 允许您设置特权升级密码。 ( 切勿存储明文密码,请务必使用加密的方式 。详见 Keep vaulted variables safely visible)

  • ansible_become_exe

    等同 to ansible_sudo_exe or ansible_su_exe, 允许您为所选的升级方法设置可执行文件

  • ansible_become_flags

    等同 ansible_sudo_flags or ansible_su_flags, 允许您设置传递给所选升级方法的标志。 也可以在中 ansible.cfg 全局设置 sudo_flags

远程主机环境变量选项:

  • ansible_shell_type

    指定远程主机使用的 Shell。 在使用该选项前一定要先将 ansible_shell_executable 设置为 non-Bourne (sh) 。 默认命令使用 sh. 设置 csh or fish 将会在远程主机上使用 csh fish,而非默认的 sh

  • ansible_python_interpreter

    目标主机 python 目录。 对于一台主机上有多个 Python 环境或者默认路径不是 /usr/bin/python 的 *BSD 环境,或者 where /usr/bin/python 的不是 2.X 系统的 Python 情况有用。我们不使用:command:/usr/bin/env 命令机制,因为这需要设置远程用户的路径,并且假定 python 可执行文件名为 python ,其中可执行文件可能命名为像 python2.6 一样的程序。

  • ansible_*_interpreter

    适用于 ruby or perl 等类型 ansible_python_interpreter 环境。这将替换运行模块在远程主机上的 shabang.

  • ansible_shell_executable

    设置远程主机使用何种 shell,默认 /bin/sh,会覆盖 executable in ansible.cfg。 如果远程主机没有安装 /bin/sh ,则需要修改下了。 ( 比如: /bin/sh 在远程主机没有安装或者无法 sudo 运行 )

链接

Inventory文件 — 国内最专业的Ansible中文官方学习手册

Inventory 使用进阶 — Ansible Documentation (cn-ansibledoc.readthedocs.io)

标签:主机,默认,ansible,inventory,设置,清单,ssh
From: https://www.cnblogs.com/rainbow-tan/p/17548451.html

相关文章

  • ansible shell模块简单使用
    ansibleshell模块简单使用参数参数说明chdir运行命令前先CD到该目录cmd运行的命令creates存在某个文件就不运行命令executable更改执行命令的shell路径,需要是绝对路径free_formTheshellmoduletakesafreeformcommandtorun,asastring.The......
  • ansible find模块简单使用
    ansiblefind模块简单使用参数参数说明paths要查找的目录列表别名:name、path类型:listrecurse是否递归遍历子目录选项:true或false,默认falsehidden是否包含隐藏文件选项:true或false,默认falsefile_type要查找的文件类型默认只查找的是文件选项:any(所......
  • Ansible写playbook设置Notify发现Handlers未触发
    1.tasks目录结构catcattasks/add_dns.ymlcathandlers/main.yml是当配置不存在时添加配置,设置notify将修改过的服务器网卡重启结论:只有当task执行成功且changed才会触发notify设置的handler,且handler会在所有task执行完成后才会执行,如过已触发但执行过程中出现了FAILED便......
  • ansible常用模块
    ansible核心内容(模块学习)ansible执行命令结果(状态颜色)绿色:命令以用户期望的执行了,但是状态没有发生改变;黄色:命令以用户期望的执行了,并且状态发生了改变;紫色:警告信息,说明ansible提示你有更合适的用法;红色:命令错误,执行失败;蓝色:详细的执行过程;官网文档如果说学ansible......
  • Celery 使用 Ansible API 返回 None
    #在celerytask中加入#frommultiprocessingimportcurrent_process#current_process()._config={"semprefix":"/mp"}@app.taskdefcreate_task()frommultiprocessingimportcurrent_processcurrent_process()._config={"sempref......
  • 利用ansible批量部署node客户端,并注册consul,实现主机自动发现
      1.在管理机器上搭建consul并上传 node_exoporter软件包,system服务配置文件,注册脚本 2.利用ansible对指定机器去分发软件包并启动服务,并curl注册到consul  编写为node-exporter.yml 3.prometheus配置consul地址,获取主机信息,自动发现并配合grafana展示  system......
  • 【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引
     目录 【Java全栈学习路线】前言目录一、JavaSE基础二、JavaWeb三、JavaEE四、Linux运维五、分布式与微服务六、大数据开发  一、JavaSE基础 JavaSE基础知识的学习是为了后边走的更远~文章链接1.计算机基础【JavaSE】之计算机基础2.Java入......
  • ansible笔记
    运维自动化之ANSIBLE本章内容运维自动化发展历程及技术应用Ansible命令使用Ansible常用模块详解YAML语法简介Ansibleplaybook基础Playbook变量、tags、handlers使用Playbook模板templatesPlaybook条件判断whenPlaybook字典with_itemsAnsibleRoles运维自动化发展......
  • ansible基本使用
    1,ansible简介ansible是一种基于python开发的自动化运维工具,它只需要在服务端安装ansible,无需在每个客户端安装客户端程序,通过ssh的方式来进行客户端服务器的管理,基于模块来实现批量数据管理,批量设备部署及批量命令执行。ansible大致模块工作原理见下图大致工作原理就是ansible程序......
  • QZ 5T 抓斗行车起重机 切电阻,空操,电气电器图纸一套这是调试后的最终版图纸,含CAD图纸,元
    QZ5T抓斗行车起重机切电阻,空操,电气电器图纸一套这是调试后的最终版图纸,含CAD图纸,元件清单,供学习参考用,这是电气图纸,没有机械的。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/653640002019.html......