Ansible之模块参数(一)

为了运行Ansible的第一个命令,我们前期做了大量的配置工作, 在controller主机和各个node主机上。为什么这么做,就是为了能够直接使用ansible,远程指挥一堆一堆的服务器,copy文件,安装软件包,更新软件,更改配置文件等等等等。。。

如果你查看了ansible官方文档,人家也是要让你从最最基础的命令开始,就像你学任何编程语言,第一个例子永远都是打印一句:hello world!

对于ansible而言,我查了一些教程,也听同事介绍过,那第一条命令就是ping。要想使用任何工具,那第一个动作就是要查看一下help,就是看看使用说明书,以确保你的打开姿势是正确的。

输入:ansible --help,就会出来很多信息,主要看Usage这一行,其实这个usage个人觉得写的不是太好,如果有个实例就更完美了。

针对ansible的参数,简单的说明一下 吧,也参考了网上的说明

ansible -h 参数解析
Usage: ansible <host-pattern> [options]

Options:
**  -a MODULE_ARGS, --args=MODULE_ARGS    下面-m模块的参数,这个参数很重要,这个参数很重要,这个参数很重要!重要的事情说三遍。如果执行默认COMMAND的模块,即是命令参数,如:“date”,"pwd"等等**
  -k, --ask-pass        ask for SSH password  登录密码,提示输入SSH密码而不是假设基于密钥的验证
  --ask-su-pass         ask for su password    su切换密码
  -K, --ask-sudo-pass   ask for sudo password  提示密码使用sudo,sudo表示提权操作
  --ask-vault-pass      ask for vault password
  -B SECONDS, --background=SECONDS     后台运行超时时间
                        run asynchronously, failing after X seconds
                        (default=N/A)
  -C, --check           don‘t make any changes; instead, try to predict some
              只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化
                        of the changes that may occur
  -c CONNECTION, --connection=CONNECTION   连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用于crontab或启动。
                        connection type to use (default=smart)
  -f FORKS, --forks=FORKS   并行任务数。NUM被指定为一个整数,默认是5
                        specify number of parallel processes to use
                        (default=5)
  -h, --help            show this help message and exit   打开帮助文档API
  -i INVENTORY, --inventory-file=INVENTORY    指定库存主机文件的路径,默认为/etc/ansible/hosts
                        specify inventory host file
                        (default=/etc/ansible/hosts)
  -l SUBSET, --limit=SUBSET    进一步限制所选主机/组模式  --limit=192.168.91.135 只对这个ip执行
                        further limit selected hosts to an additional pattern
  --list-hosts          outputs a list of matching hosts; does not execute
                        anything else
**  -m MODULE_NAME, --module-name=MODULE_NAME   执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数。这个参数很重要,这个参数很重要!重要的事情说三遍。**
                        module name to execute (default=command)
  -M MODULE_PATH, --module-path=MODULE_PATH    要执行的模块的路径,默认为/usr/share/ansible/
                        specify path(s) to module library
                        (default=/usr/share/ansible/)
  -o, --one-line        condense output      压缩输出,摘要输出.尝试一切都在一行上输出。
  -P POLL_INTERVAL, --poll=POLL_INTERVAL    调查背景工作每隔数秒。需要- b
                        set the poll interval if using -B (default=15)
  --private-key=PRIVATE_KEY_FILE    私钥路径,使用这个文件来验证连接
                        use this file to authenticate the connection
  -S, --su              run operations with su    用 su 命令
  -R SU_USER, --su-user=SU_USER      指定SU的用户,默认是root用户
                        run operations with su as this user (default=root)
  -s, --sudo            run operations with sudo (nopasswd)
  -U SUDO_USER, --sudo-user=SUDO_USER    sudo到哪个用户,默认为 root
                        desired sudo user (default=root)
  -T TIMEOUT, --timeout=TIMEOUT    指定SSH默认超时时间,  默认是10S
                        override the SSH timeout in seconds (default=10)
  -t TREE, --tree=TREE  log output to this directory     将日志内容保存在该输出目录,结果保存在一个文件中在每台主机上。
  -u REMOTE_USER, --user=REMOTE_USER    远程用户, 默认是root用户
                        connect as this user (default=root)
  --vault-password-file=VAULT_PASSWORD_FILE
                        vault password file
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable    如果命令执行成功,输出详细的结果。输出执行过程的详细信息:-v<-vv<-vvv<-vvvv,单间的说就是v越多,输出的信息就越详细。
                        connection debugging)(
-
vv –vvv
-
vvvv)

  --version             show program‘s version number and exit   输出ansible的版本

好了,上面的帮助信息,看看就好,知道大概怎么用了,但是还不够具体。要想运行ansible命令,还有一个前提条件,就是要把受控的主机,加到ansible的hosts文件里,这样ansible才知道它受控的主机有哪些。hosts文件路径在:/etc/ansible/hosts下。我们来cat一下,看看里面的内容:

如上图所示,这个hosts文件里已经给出了3个例子,怎么写受控主机你应该知道了吧。
第一种:简单粗暴,直接写受控主机的hostname或者IP地址。
第二种和第三种:类似,都是以分组的方式——[组名],这个组名就是可以跟在ansible命令行后的。所以,可以这么理解:

  1. ansible命令后面必须要跟目标主机
  2. 这个目标主机的写法有多种,可以是目标主机的hostname,也可以是IP,也可以是你定义在ansible hosts文件里的组名。
  3. 但是无论是什么名字,那都要加入到ansible的hosts文件里,否则是没用的,ansible是不识别的。所以这个hosts文件,是ansile的仓库,你让ansible做什么事情,它得先找到目标,那它每次都是先去这个仓库里找目标,然后再下手。

所以我现在先用简单第一种简单粗暴的方式,把node1,node2和node3都加进去,而且只加他们的主机名,更改之后保存,退出。

由于我们没有分组,所以直接执行下面的命令:

ansible node1 -m ping

ansible:命令关键字,必须要有
node1:就是你要远程控制的主机名称,这里也可以使用IP地址,效果相同
-m:这个就是指你想用ansible的哪个模块,后面跟上就行,现在这个 例子是用ping的模块。注意这个是Linux上面的ping模块,如果目前主机是Windows,是有一个Win_ping对应的模块。最好带上吧!如果不带这个-m参数,默认是使用command这个模块。

以上就是一个最简单的ansible ad-hoc命令了。

下面我们在执行ansible命令时,把node1这个主机名称,换成IP地址看看:

从上图可以看到,是不行滴。为什么呢?回顾一下ansible执行的过程,它会先去仓库里找目标啊,很显然,我们没有 把这个IP地址加入到hosts这个仓库里,它当然就找不到了。那我们现在把这个IP地址加入进去,然后再运行一下:ansible 192.168.137.101 -m ping,看看会不会报错。

加入IP地址到ansible hosts文件中:

再运行命令:ansible 192.168.137.101 -m ping

完美,你发起了ping,它给你个pong。没毛病。

那现在我们用第二、第三种方法,把不同的server,分成不同的组。

假如node1和node2是web服务器,那我就把这两台主机放到[webservers]组,那node3就当做database服务器吧,放到[dbservers]
调整ansible的hosts文件如下:

注意一下,我在[dbservers]这个组下,放了node3主机名和node1的IP地址。

让我们来ansible一下,对象是我们新建的组,先来webservers组吧:

两个ping,连个pong,都显示SUCCESS,没毛病。

那我们再来看看dbservers这个组,因为这个组里包含了主机名和主机IP地址两种格式:

如上图所示,两个ping,连个pong,都显示SUCCESS,没毛病。

好了,这个就先扯到这里吧!下篇再加个参数,你猜是哪个?

原文地址:https://blog.51cto.com/jiaszwx/2412118

时间: 2024-10-21 08:15:21

Ansible之模块参数(一)的相关文章

ansible软件模块参数

ansible-doc -l|wc -l1378 ansible 管理主机信息或者主机组信息 -m 模块名称 -a 相关模块参数 主机信息:远程主机IP地址 远程主机组名称 远程所有主机all -m 指定相应模块 -a 利用模块中某些参数功能 (一)命令类型模块: 第一个模块:command 官方参考链接:http://docs.ansible.com/ansible/latest/modules/command_module.html 参数:chdir---在执行某个命令前,先切换目录 [[e

2. ansible常用模块

Ansible通过模块的方式来完成一些远程的管理工作. ansible-doc -l查看所有模块 ansible-doc -s module来查看某个模块的参数, ansible-doc help module来查看该模块更详细的信息. 模块命令 -i 设备列表路径,可以指定一些动态路径 -f 并发任务数 -private-key 私钥路径 -m 模块名称 -M 模块夹的路径 -a 参数 -k 登陆密码 -K sudo密码 -t 输出结果保存路径 -B 后台运行超时时间 -P 调查后台程序时间

ansible常用模块介绍

ansible查看模块用法 例子 查看shell 模块使用方法 [[email protected] opt]# ansible-doc -s shell 注: -i 指定配置文件  tomcatserver自己定义的工作组  -m 指定模块 file模块 file模块包含如下选项: force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下:另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no group:定义文件/目录的属组 mo

Ansible常用模块介绍及使用

ansible常用命令解析: 查看当前 ansible 都支持哪些模块: ansible-doc -l 查看某一模块可以使用的参数:ansible-doc -s copy (eg:copy模块) ansible用法: ansible 主机名 -m 模块名 -a 模块参数 -m:模块的名字,如果执行单一的命令不用加-m,默认走command -a: 模块参数,如果模块是command,-a 后面跟的就是命令参数 -i : 指定hosts文件位置      默认:/etc/ansible/hosts

ansible常用模块详解

ansible常用模块详解: ansible <host-pattern> [-m module_name] [-a args] [options] #ansible命令格式  指定主机组或ip地址  指定调用模块   传递给模块的参数   ansible-doc -l #列出可用模块 ansible-doc -s model_name #查看指定模块详细用法 command:ansible默认模块,对指定主机执行命令,不能理解特殊字符 例:ansible web -a 'date' #对we

Ansible 常用模块介绍

ansible提供了众多模块,我们可以在ansible主机上运行ansible-doc -l命令查看ansible所有支持的模块.通过ansible-doc -s MODULE_NAME  命令可以查看指定模块的所有参数 查看所有模块 [email protected]:/etc/ansible/roles/tomcat8_install/tasks# ansible-doc  -l less 436 Copyright (C) 1984-2009 Mark Nudelman less come

ansible常见模块

模块的使用 查看模块帮助 ansible-doc -l 查看所有模块 ansible-doc -s MODULE_NAME 查看指定模块的详细帮助 ansible命令应用基础 语法: ansible <host-pattern> [-f forks] [-m module_name] [-a args] -f forks:启动的并发线程数 -m module_name: 要使用的模块 -a args: 模块特有的参数 常用模块 command 功能:命令模块,默认模块,用于在远程主机执行命令,

Ansible常用模块及API

Ansible安装 安装EPEL作为安装Ansible的yum源(CentOS6.4): rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm 安装Ansible: yum install ansible -y 配置文件: 路径:/etc/ansible/hosts配置说明:webservers为组名,下面的ip或域名则是属于该组的主机. [webservers] 192.168.1.111

Ansible 八(ansible配置文件常用参数)

ansible配置文件常用参数 host_key_checking host_key_checking=False 禁用验证host_key_checking inventory   定义库文件位置,脚本,或者存放可通信主机的目录 inventory = /etc/ansible/hosts library ansible默认搜寻模块的位置 library = /usr/share/ansible Ansible知道如何搜寻多个用冒号隔开的路径,同时也会搜索在playbook中的"./libra