清单的用法、配置文件的配置、临时命令的用法

构建Ansible清单

定义清单

清单定义Ansible将要管理的一批主机。这些主机也可以分配到组中,以进行集中管理。组可以包含子组,主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量。

可以通过两种方式定义主机清单。静态主机清单可以通过文本文件定义。动态主机清单可以根据需要使用外部信息提供程序通过脚本或其他程序来生成。

使用静态清单指定受管主机

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

在最简单的形式中。INI样式的静态清单文件是受管主机的主机名或IP地址的列表,每行一个:

但通常而言,可以将受管主机组织为主机组。通过主机组,可以更加有效的对一系列系统运行Ansible。这时,每一部分的开头为以中括号括起来的主机组名称。其后为该组中每一受管主机的主机名或IP地址,每行一个。

[root@localhost ~]# vi /etc/ansible/hosts
## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110# If you have multiple hosts following a pattern you can specify
# them like this:## www[001:006].example.com# Ex 3: A collection of database servers in the 'dbservers' group## [dbservers]
##
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57
验证清单
[root@localhost ~]# vi /etc/ansible/hosts
green.example.com
blue.example.com
192.168.100.1
192.168.100.10      //取消注释
//验证green主机是否存在于清单
[root@localhost ~]# ansible green.example.com --list-hostshosts (1):green.example.com
//列出清单中的所有主机
[root@localhost ~]# ansible all --list-hostshosts (4):green.example.comblue.example.com192.168.100.1192.168.100.10
[root@localhost ~]# vi /etc/ansible/hosts
[webservers]
alpha.example.org
beta.example.org
192.168.1.100
192.168.1.110       //取消此主机组的注释
//列出指定主机组
[root@localhost ~]# ansible webservers --list-hostshosts (4):alpha.example.orgbeta.example.org192.168.1.100192.168.1.110

如果清单中含有名称相同的主机和主机组,ansible 命令将显示警告并以主机作为其目标。主机组则被忽略。

应对这种情况的方法有多种,其中最简单的是确保主机组不使用与清单中主机相同的名称。

覆盖清单的位置

/etc/ansible/hosts文件被视为系统的默认静态清单文件。不过,通常的做法是不使用该文件,而是在Ansible配置文件中为清单文件定义一个不同的位置。

修改清单文件位置

[root@localhost ~]# cd /etc/ansible/
[root@localhost ansible]# touch qingdan
[root@localhost ansible]# vi ansible.cfg
inventory      = /etc/ansible/inventory        //取消注释并修改位置

构建Ansible清单

//写入内容
[root@localhost ansible]# vi inventory
192.168.253.132[webservers]
192.168.253.130192.168.253.133//列出默认清单文件中的所有受管主机
[root@localhost ansible]# ansible all  --list-hostshosts (3):192.168.253.132192.168.253.130192.168.253.133//列出不属于任何组的受管主机
[root@localhost ansible]# ansible ungrouped --list-hostshosts (1):192.168.253.132//列出属于某组的受管主机
[root@localhost ansible]# ansible webservers --list-hostshosts (2):192.168.253.130192.168.253.133

Ansible配置

[root@localhost ~]# vi /etc/ansible/ansible.cfg
······
[defaults]# some basic default values...inventory     = /etc/ansible/inventory
#library        = /usr/share/my_modules/
#module_utils   = /usr/share/my_module_utils/
#remote_tmp     = ~/.ansible/tmp
#local_tmp      = ~/.ansible/tmp
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
#forks          = 5
#poll_interval  = 15
#sudo_user      = root
#ask_sudo_pass = True
#ask_pass      = True
#transport      = smart
#remote_port    = 22
......

临时命令

Ansible运行临时命令的语法如下:

ansible host-pattern -m module [-a 'module arguments'] [-i inventory]

host-pattern参数用于指定在其上运行临时命令的受管主机。它可以是清单中的特定受管主机或主机组。也可以用后面的-i选项指定特定的清单而不使用默认清单。

-m选项将Ansible应在目标主机上运行的module名称作为参数。模块是为了实施任务而执行的小程序。一些模块不需要额外的信息,但其他模块需要使用额外的参数来指定其操作详情。-a选项以带引号字符串形式取这些参数的列表。

一种最简单的临时命令使用ping模块。此模块不执行ICMP ping,而是检查能否在受管主机上运行基于Python的模块。例如,以下临时命令确定清单中的所有受管主机能否运行标准的模块:

[root@localhost ~]# vi /etc/ansible/inventory
web1 ansible_user=root ansible_password=raylay
[root@localhost ~]# vi /etc/hosts
192.168.253.131 web1
[root@localhost ~]# ssh web1
[root@localhost ~]# ansible web1 -m ping
web1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}

常用模块

模块类别 模块
文件模块 copy:将本地文件复制到受管主机 file:设置文件的权限和其他属性 lineinfile:确保特定行是否在文件中 synchronize:使用rsync同步内容
软件包模块 package:使用操作系统本机的自动检测软件包管理器管理软件包 yum:使用yum管理软件包 apt:使用APT管理软件包 dnf:使用dnf管理软件包 gem:管理Ruby gem pip:从PyPI管理Python软件包
系统模块 firewalld:使用firewalld管理防火墙 reboot:重启计算机 service:管理服务 user:添加、删除和管理用户帐户
Net Tools模块 get_url:通过HTTP、HTTPS或FTP下载文件 nmcli:管理网络 uri:与Web服务交互

大部分模块会取用参数。可在模块的文档中找到可用于该模块的参数列表。临时命令可以通过-a选项向模块传递参数。无需参数时,可从临时命令中省略-a选项。如果需要指定多个参数,请以引号括起的空格分隔列表形式提供。

临时命令使用user模块来确保raylay用户存在于web1上并且其UID为4000:

[root@localhost ~]# ansible web1 -m user -a 'name=raylay uid=4000 state=present'
web1 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"comment": "","create_home": true,"group": 4000,"home": "/home/raylay","name": "raylay","shell": "/bin/bash","state": "present","system": false,"uid": 4000
}
[root@localhost ~]# ansible all -a 'id raylay'
web1 | CHANGED | rc=0 >>
uid=4000(runtime) gid=4000(runtime) groups=4000(runtime)

清单的用法、配置文件的配置、临时命令的用法相关推荐

  1. linux中chmod命令的用法,【linux】chmod命令详细用法

    功能说明: 变更文件或目录的权限 u:User,即文件或目录的拥有者. g:Group,即文件或目录的所属群组. o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围. a:Al ...

  2. bat for循环_bat教程[279] reg import命令的用法

    古树屋Click to follow us C:\Users\86137>reg import /?REG IMPORT FileName[/reg:32 | /reg:64] FileName ...

  3. bat ping 返回值_bat教程[273] print命令的用法

    古树屋Click to follow us (1)print命令的简介 C:\Users\86137>print /?打印文本文件.PRINT [/D:device] [[drive:][pat ...

  4. linux 监控报文命令 nc,linux监控命令nc用法

    一.nc命令检测端口的用法 # nc -v -w 10 %IP% -z %PORT% -v 显示指令执行过程. -w 设置等待连线的时间. -u 表示使用UDP协议 -z 使用0输入/输出模式,只在扫 ...

  5. linux ifconfig命令参数及用法详解--linux查看配置网卡命令

    ifconfig 是一个用来查看.配置.启用或禁用网络接口的工具,这个工具极为常用的.可以用这个工具来临时性的配置网卡的IP地址.掩码.广播地址.网关等.也可以把 它写入一个文件中(比如/etc/rc ...

  6. java spring配置文件路径_java - 在spring b中从命令行设置活动配置文件和配置位置...

    java - 在spring b中从命令行设置活动配置文件和配置位置 我有一个春季启动应用程序. 我的应用程序中有三个配置文件 - > 开发,分期和生产. 所以我有3个文件 应用developm ...

  7. ansible模块临时命令

    ansible模块临时命令 使用临时命令通过模块来执行任务 一. 查看系统上安装的所有模块 ansible-doc -l 查看ping模块帮助文档 ansible-doc ping 1. ansibl ...

  8. ansible自动化运维详解(一)ansible的安装部署、参数使用、清单管理、配置文件参数及用户级ansible操作环境构建

    文章目录 ansible自动化运维详解(一)ansible的安装部署.参数使用.清单管理.配置文件参数及用户级ansible操作环境构建 一.ansible的安装部署 1.1.ansible简介 1. ...

  9. spring Boot 2 运维篇(spring boot程序的打包与部署,多环境开发配置文件的配置,spring boot集成日志框架)

    目录 1.SpringBoot程序的打包与运行 程序打包 程序运行 SpringBoot程序打包失败处理 命令行启动常见问题及解决方案 SpringBoot项目快速启动(Linux版) 2.配置高级 ...

最新文章

  1. php 输出 echo、print_r、print、var_dump 、die 区别
  2. leetcode算法题--Surrounded Regions
  3. Navicat使用教程:使用Navicat Query Analyzer优化查询性能(第1部分)
  4. Windows下Caffe的学习与应用(一)——训练自己的数据模型(GoogleNet)
  5. linux路由修改密码,Linux中修改Mysql root用户密码的方法
  6. python输入水果求个数问题_水果爱好者:用Python解决一个简单的分类问题
  7. 数字心电图仪综合系统设计与实现verilog
  8. HDU 4085 Steiner树模板称号
  9. HDUOJ---1879 继续畅通工程
  10. 2020年B站UP主价值研究报告
  11. [转] 81条经典话语~~~当裤子失去皮带,才懂得什麽叫做依赖
  12. yamlcpp遍历_gf-cli 命令行工具
  13. Mapped Statements collection already contains value for*
  14. 系统制作与优化2007最终版
  15. 【蓝桥杯真题】2021年蓝桥杯省赛B组题目解析+代码(C/C++)
  16. WebStorm常用插件推荐
  17. 正弦交流电的最大值、有效值、和瞬间值概念解析和计算
  18. 以太坊生态缺陷导致的一起亿级代币盗窃大案
  19. iPhone的备忘录如何进行撤销?
  20. 汇编之EBP的认识。

热门文章

  1. 错误跳转html页面模板,404错误页面模板代码大全 - 搜外SEO问答
  2. 2021年5月系统集成项目管理工程师案例分析真题视频讲解(3)
  3. 如何制作u盘pe启动盘?
  4. Git的4 个阶段的撤销更改(通俗易懂)
  5. 多张图片如何合并成一个pdf
  6. Filebeat is unable to load the Ingest Node pipelines for the configured modules
  7. BlinkOn9 - Layered APIs
  8. 建筑智能化资质办理要求
  9. 佛罗里达大学计算机科学,佛罗里达大学计算机工程硕士专业排名最全内幕详尽分析...
  10. Eclipse Memory Analyzer 使用技巧