004.Ansible Ad-Hoc命令集
一 Ad-Hoc使用场景
1.1 Ad-Hoc基础命令
- 1 ansible <host-pattern> [options]
- 1 [options]:
- 2 -v,--verbose:输出更详细的执行过程信息,-vvv可得到执行过程所有信息;
- 3 -i PATH,--inventory=PATH:指定inventory信息,默认/etc/ansible/hosts;
- 4 -f NUM,--forks=NUM:并发线程数,默认5个线程;
- 5 --private-key=PRIVATE_KEY_FILE:指定秘钥文件;
- 6 -m NAME,--module-name=NAME:指定执行使用的模块。
- 1 -M DIRECTORY,--module-path=DIRECTORY:指定模块存放路径,默认/usr/share/ansible;
- 2 -a 'ARGUMENTS',--args=‘ARGUMENTS’"模块参数;
- 3 -k,--ask-pass SSH:认证密码;
- 4 -K,ask-sudo=pass sudo:用户的密码(--sudo时使用);
- 5 -o,--one-line:标准输出至一行;
- 6 -s,--sudo:相当于Linux系统下的sudo命令;
- 7 -t DIRECTORY,--tree=DIRECTORY:输出信息至DIRECTORY目录下,结果文件以远程主机命名;
- 8 -T SECONDS,--timeout=SECONDS:指定连接远程主机的最大超时,单位是秒;
- 9 -B NUM,--background=NUM:后台执行命令,超NUM秒后中止正在执行的任务;
- 10 -P NUM,--poll=NUM:定期返回后台任务进度;
- 11 -u USERNAME,--user=USERNAME:指定远程主机以USERNAME运行命令;
- 12 -U SUDO_USERNAME,--sudo-user=SUDO_USERNAME:使用sudo,相当于Linux系统下的sudo命令;
- 13 -c CONNECTION,--connection=CONNECTION:指定连接方式,可用选项paramiko(SSH)、ssh、local,local方式常用于crontab和kickstarts;
- 14 -l SUBSET,--limit=SUBSET:指定运行主机;
- 15 -l ~REGEX,--limit=~REGEX:指定运行主机(正则);
- 16 --list-hosts:列出符合条件的主机列表,不执行任何命令。
- 场景1:检查myhost主机组所有主机是否存活.
- 1 [root@manage ~]# ansible myhost -f 5 -m ping

- 场景2:返回myhost组所有主机的hostname,并打印最详细的执行过程到标准输出。
- 1 [root@manage ~]# ansible myhost1 -s -m command -a 'hostname' -vvv

- 场景3:列出myhost组所有主机列表。
- 1 [root@manage ~]# ansible myhost --list-hosts

- 场景4:将172.24.8.31服务器以root执行sleep 20,设置最大连接超时为2s,且设置为后台运行模式,执行过程每2s输出一次进度,如5s还未执行完则终止该任务。
- 1 [root@manage ~]# time ansible 172.24.8.31 -B 5 -P 2 -T 2 -m command -a 'sleep 20' -u root
1.2 通过Ad-Hoc查看系统设置
- 场景1:批量查看myhost组所有主机的磁盘容量(command模块)。
- 1 [root@manage ~]# ansible myhost -a "df -hl"

- 场景2:批量查看远程主机内存使用情况(shell模块)。
- 1 [root@manage ~]# ansible myhost -m shell -a "free -m"
二 Ansible模块使用
2.1 Ad-Hoc查看模块介绍
- 1 ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
- 1 [root@manage ~]# ansible-doc -l #列出支持的模块
- 2 [root@manage ~]# ansible-doc yum #查看模块功能说明
- 场景1:安装redhat-lsb并查看服务器系统版本号。
- 1 [root@manage ~]# ansible myhost -m yum -a 'name=redhat-lsb state=present' #安装软件

- 1 [root@manage ~]# ansible myhost -a 'lsb_release -a'

- 场景2:为服务器安装MySQL,并启动,同时设置为开机启动.
- 1 [root@manage ~]# ansible myhost -m yum -a 'name=mariadb,mariadb-server state=present'
- 2 [root@manage ~]# ansible myhost -m service -a 'name=mariadb state=started enabled=yes'
三 Ansible主机、用户与组管理
3.1 主机变更
- 情景1:指定组内特定主机变更。
- 1 [root@manage ~]# ansible myhost -m service -a 'name=ntpd state=started' --limit "172.24.8.31"
- 场景2:通过指定具体IP限定主机做变更。
- 1 [root@manage ~]# ansible 172.24.8.32 -m command -a "systemctl start ntpd"
- 场景3:指定多台主机做变更。
- 1 [root@manage ~]# ansible 172.24.8.31:172.24.8.33 -m command -a "systemctl start ntpd"
- 1 [root@manage ~]# ansible 172.24.8.3* -m command -a "systemctl stop ntpd"
3.2 Linux用户管理模块user
参数
|
必填
|
默认值
|
选项
|
说明
|
append
|
否
|
No
|
Yes/no
|
yes:增量添加group
no:全量变更group,只设置groups指定的group组
|
comment
|
否
|
|
|
用户的描述信息
|
createhome
|
否
|
yes
|
Yes/no
|
yes:添加用户同时创建家目录;
no:添加用户时不创建家目录;
|
force
|
否
|
No
|
Yes/no
|
强制,结合state=absent使用,
相当于userdel --force
|
generate_ssh_key
|
否
|
No
|
Yes/no
|
是否生成秘钥,不会覆盖已有SSH key
|
group
|
否
|
|
|
可选,设定用户的主组
|
groups
|
否
|
|
|
设置用户附属组,用逗号分隔的组;
当groups设定为空,则会移除除主组外其他所有组
|
home
|
否
|
|
|
可选,设定为用户的home目录
|
login_class
|
否
|
|
|
可选,设定FreeBSD/OpenBSD/NetBSD系统的用户
登陆class
|
name
|
是
|
|
|
用户名
|
move_home
|
否
|
No
|
Yes/no
|
若为yes,则会临时迁移家目录到特定目录
|
non_unique
|
否
|
No
|
Yes/no
|
可选,结合-u使用,允许改变用户ID为非唯一值
|
password
|
否
|
|
|
可选,设定用户的密码(加密后的密码)
|
remove
|
否
|
No
|
Yes/no
|
结合state=absent使用,
相当于userdel --remove
|
seuser
|
否
|
可选,设置seuser类型启用SELinux
|
||
shell
|
否
|
|
|
可选,设定用户的shell
|
skeleton
|
否
|
可选,设置用户skel目录,
需和createhome参数结合使用
|
||
ssh_key_bits
|
否
|
2048
|
|
可选,设定SSH key的加密位数
|
ssh_key_comments
|
否
|
$HOSTHOME
|
|
可选,定义SSH key注释信息
|
ssh_key_file
|
否
|
.sha/id_rsa
|
|
可选,定义SSH key文件名
|
ssh_key_passphrase
|
否
|
|
|
设置SSH key密码,若没有提供,则默认不加密
|
ssh_key_type
|
否
|
Rsa
|
|
可选,指定SSH key类型
|
state
|
否
|
Present
|
Present
Absent
|
present:新增用户
absent:删除用户
|
system
|
否
|
No
|
Yes/no
|
创建为系统账号,不会改变已经存在的用户
|
uid
|
否
|
|
|
可选,设定为用户的uid
|
update_password
|
否
|
Always
|
Always
On_create
|
always:只有当用户密码不同才会更新密码
on_create:只为新用户设置密码
|
- 场景1:新增用户
- 1 [root@manage ~]# ansible myhost1 -m user -a "name=dba shell=/bin/bash append=yes groups=adm,mysql home=/home/dba state=present"

- 场景2:修改用户属组
- 1 [root@manage ~]# ansible myhost1 -m user -a "name=dba groups=mysql append=no"

- 场景3:设置用户密码
- 步骤一:生成加密后的密码
- 方式一:使用passlib生成密码
- 1 [root@manage ~]# pip install passlib #使用pip安装psslib
提示:pip安装参考《001.Pip简介及使用》,passlib对于不同Python版本使用方式略有差异,Python多版本管理参考《Python多环境管理》。
- 1 [root@manage ~]# python -c "from passlib.hash import sha512_crypt;import getpass;print (sha512_crypt.encrypt(getpass.getpass()))" #使用Python3.x sha512加密算法加密
- 2 Password: #输入密码x120952576
提示:sha512加密的密码包括特殊元字符,如\n,在传输至远程服务器可能导致密码被转移异常的问题。
- 1 [root@manage ~]# python -c 'import crypt;print(crypt.crypt("x120952576","dba"))' #使用Python3.x 普通加密算法加密
- 使用Python2.x sha512加密算法加密
略
- 使用Python3.x 普通加密算法加密
略
- 方式二:使用mkpasswd生成密码
略
- 步骤二:执行加密操作
- 1 [root@manage ~]# ansible myhost1 -m user -a "name=dba password=dbX.h0rUHw3Kc update_password=always"

- 场景4:删除用户
- 1 [root@manage ~]# ansible myhost1 -m user -a "name=dba remove=yes state=absent"

四 其他模块应用
4.1 Windows用户管理
- 1 [root@manage ~]# ansible myhost2 -m win_user -a "name=dba passwd=x123456 group=Administrator"
4.2 MySQL应用
- 1 [root@manage ~]# ansible myhost1 -m mysql_user -a "login_host=localhost login_password=x120952576 login_user=root name=dba password=x123456 priv=mysql.host:ALL state=present"

004.Ansible Ad-Hoc命令集的更多相关文章
- 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块
五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options] -v,--verbose ...
- Ansible Ad-Hoc命令集
Ad-Hoc Ad-Hoc就是 “临时命令”, 从功能上讲 Ad-Hoc跟Ansible-playbook都差不多,Ansible提供了两种完成任务的方式: Ad-Hoc命令集与Ansible-pla ...
- ansible 三配置和命令集
一.Ansible配置 Ansible安装好之后的配置文件有如下两种: 1.yum安装,配置文件默认路径为: /etc/ansible/ansible.cfg 2.源码包安装,配置文件路径需要从软件包 ...
- [k8s]kubespray(ansible)自动化安装k8s集群
kubespray(ansible)自动化安装k8s集群 https://github.com/kubernetes-incubator/kubespray https://kubernetes.io ...
- Ansible快速开始-指挥集群
Ansible可以集中地控制多个节点,批量地执行ssh命令.由于其使用ssh进行操作,因此远端服务器除了安装openssh-server(一般服务器已经内置)之外,不需要安装额外的软件,因此使用非常简 ...
- Ansible自动化部署K8S集群
Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...
- 即席查询(Ad Hoc)如何做到又快又稳?
数字化与数字生态建设,是当前所有企业成长发展的必经之路.随着"加强新型基础设施建设"第一次被写入政府工作报告,5G.人工智能.工业互联网.智慧城市等新型基建彻底激发了数字的价值. ...
- shell编程:定义简单标准命令集
shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问
delphi ado 跨数据库访问 语句如下 ' and db = '帐套1' 报错内容是:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATE ...
- Ad hoc sql
SQL Server如何启用Ad Hoc Distributed Queries? 2011-08-11 14:53 wangdingbang CSDN博客 字号:T | T 本文主要介绍了SQL ...
随机推荐
- Oracle11g 启动数据库实例、关闭数据库实例
Oracle11g 启动数据库实例 startup 1: nomount 模式: 描述: 该模式只会创建实例(即:创建oracle 实例的各种内存结构和 ...
- Confluence 6 计划任务
管理员控制台能够允许你对 Confluence 运行的计划任务进行计划的调整,这些计划任务将会按照你的调整按时执行.可以按照计划执行的任务如下: Confluence 站点备份 存储优化任务,清理 C ...
- 设置 Confluence 6 外部索引站点
Confluence 并不能比较容易的对外部站点进行搜索,这个是因为 Confluence 使用的是 Lucene 内部查找,但是你还是有下面 2 个可选的方案: 嵌入外部页面到 Confluence ...
- usrp-B210
sudo add-apt-repository ppa:ettusresearch/uhd sudo apt-get update sudo apt-get install libuhd-dev li ...
- 《剑指offer》 链表中倒数第k个节点
本题来自<剑指offer> 链表中倒数第k个节点 题目: 输入一个链表,输出该链表中倒数第k个结点. 思路: 倒数第k个节点,而且只能访问一遍链表,定义两个节点,两者之间相差k个距离,遍历 ...
- VGG-Net
论文下载 源码GitHub 目的 这篇文章是以比赛为目的——解决ImageNet中的1000类图像分类和定位问题.在此过程中,作者做了六组实验,对应6个不同的网络模型,这六个网络深度逐渐递增的同时,也 ...
- collections模块
collections模块在内置数据类型(dict.list.set.tuple)的基础上,还提供了几个额外的数据类型:ChainMap.Counter.deque.defaultdict.named ...
- 在lnmp环境下,将原来的PHP7.0升级到PHP7.2
基础环境: 系统:centos6.8 环境:lnmp 停止PHP7.0的版本,在做如下操作: 1.下载php-7.2.6.tar.bz2软件包放在/opt 路径下 mkdir /usr/local ...
- 沈阳润才教育CRM
一.CRM初始 CRM,客户关系管理系统(Customer Relationship Management).企业用CRM技术来管理与客户之间的关系,以求提升企业成功的管理方式,其目的是协助企业管理销 ...
- 阿里云人脸识别测试接口出错 返回Body:{ "errno": 3002, "err_msg": "ILLEGAL_PARAMETERS", "request_id": "672cba83-cf93-4ef4-9ce5-d87e51601632" }
错误信息如下 返回Body:{ "errno": 3002, "err_msg": "ILLEGAL_PARAMETERS", ...... ...