Ansible中的常用命令及ad-hoc执行模式


一、ad-hoc模式(点对点模式)

使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于shell中的一句话。

二、命令运行方式及常用参数

1.ansible实现管理的方式

Ad-Hoc		%利用ansible命令直接完成管理,主要用于临时命令使用场景
playbook	%ansible脚本,主要用于大型项目场景,需要前期的规划

2.Ad-Hoc执行方式中如何获得帮助

ansible-doc	            %显示模块帮助的指令
格式:
ansible-doc [参数] [模块...]
常用参数:
-l		                %列出可用模块
-s		                %显示指定模块的playbook片段

3.ansible命令运行方式及常用参数

格式:
ansible	清单	-m 模块	-a 模块参数

常用参数
--version		        %显示版本
-m module		        %指定模块,默认为command模块
-v			            %详细过程 -vv -vvv更详细过程
--list			        %显示主机列表,也可以用--list-hosts
-k			            %提示输入ssh连接密码,默认key认证
-C			            %预执行检测
-T			            %执行命令的超时时间,默认10s
-u			            %指定远程执行的用户
-b			            %执行sudo切换身份操作
-become-user=USERNAME	%指定sudo的用户
-K			            %提示输入sudo密码

4.ansible的基本颜色代表信息

绿色		           %执行成功但未对远程主机做任何改变
黄色		           %执行成功并对远程主机做改变
红色		           %执行失败

三、Ansible配置文件相关

1.ansible配置文件

ansible 的配置文件为/etc/ansible/ansible.cfg,ansible 有许多参数,下面我们列出一些常见的参数:
inventory = /etc/ansible/hosts		%这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible		%指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5		                    %并发连接数,默认为5
sudo_user = root		            %设置默认执行命令的用户
remote_port = 22		            %指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
host_key_checking = False		    %设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
timeout = 60		                %设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log		%指定一个存储ansible日志的文件(默认不记录日志)

2.ansuble主机清单

在配置文件中,我们提到了资源清单,这个清单就是我们的主机清单,里面保存的是一些 ansible 需要连接管理的主机列表。我们可以来看看默认的定义方式:
1、 直接指明主机地址或主机名:
	## green.example.com#
	# blue.example.com#
	# 192.168.100.1
	# 192.168.100.10
2、 定义一个主机组[组名]把地址或主机名加进去
	[mysql_test]
	192.168.253.159
	192.168.253.160
	192.168.253.153

3.ansible配置文件查找顺序

ansible与我们其他的服务在这一点上有很大不同,这里的配置文件查找是从多个地方找的,顺序如下:
(1)检查环境变量ANSIBLE_CONFIG指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg)
(2)~/.ansible.cfg,检查当前目录下的ansible.cfg配置文件;
(3)/etc/ansible.cfg检查etc目录的配置文件。

四、常用模块

1.command

功能: 在远程主机执行命令,此模块为默认模块

常用参数:
chdir		              %执行命令前先进入到指定目录
cmd		                  %运行命令指定
creates		              %如果文件存在将不运行
removes		              %如果文件存在在将运行
free_form	              %在远程主机中执行的命令,此参数不需要加

实例:
ansible all -m command -a "useradd lee" -u root -k
ansible all -m command -a "userdel -r lee" -u root -k
ansible all -m command -a "chdir=/etc cat passwd " -u root -k
ansible all -m command -a "chdir=/etc creates=/etc/passwd cat passwd " -u root -k 
ansible all -m command -a "chdir=/etc removes=/etc/passwd cat passwd " -u root -k

注意:
Linux中的很多通配符在command模块中不支持

2.copy

功能:
从ansible主机复制文件到受控主机

常用参数:
src		    %源文件
dest		%目的地文件
owner		%指定目的地文件所有人
group
mode		%指定目的地文件权限
backup=yes	%当受控主机中存在文件时备份原文件
content		%指定文本内容直接在受控主机中生成文件

实例:
ansible all -m copy -a "src=/root/westos dest=/mnt/westos  owner=lee mode=777 backup=yes"
ansible all -m copy -a "content='hello westos\nhello linux\n' dest=/mnt/westosfile1 owner=lee mode=600"

3.dnf

作用:
管理系统中的dnf仓库及管理软件

常用参数:
name		%指定包
state		%指定动作
		    %present	安装
		    %latest		更新
		    %absent		删除
list		%列出指定信息
		    %httpd	
		    %installed
		    %all
		    %available
disable_gpg_check       %禁用gpgkey检测
enablerepo	            %指定安装包来源
disablerepo         	%禁用安装包来源

实例:
ansible all -m dnf -a "name=httpd state=latest"
ansible all -m dnf -a 'name="httpd,mariadb-server" state=present'
ansible all -m dnf -a 'name=httpd state=absent'
ansible all -m dnf -a 'name=httpd state=absent autoremove=no'
ansible all -m dnf -a 'name=httpd state=present enablerepo=AppStream'
ansible all -m dnf -a 'name="*" state=latest'
ansible all -m dnf -a 'name=http://172.25.254.250/software/wps-office-xxx.rpm state=present'
ansible all -m dnf -a 'name="@Virtual Tools" state=present'

4.service

作用:
管理系统服务状态

常用参数:
name		    %指定服务名称
state		    %指定对服务的动作
		        %started
		        %stoped
		        %reseted
		        %reloaded
enabled		    %设定服务开机是否启动
		        %yes开启启动
		        %no开机不启动

实例:
ansible all -m service -a "name=httpd state=started enabled=yes" -k		
ansible all -m service -a "name=httpd state=restarted enabled=yes" -k

5.user

作用:
模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作

常用参数:
name		        %必须参数,用于指定要操作的用户名称。
group		        %指定用户所在的基本组。
gourps		        %指定用户所在的附加组。
append		        %指定添加附加组默认值为no
shell		        %指定用户的默认 shell。
uid		            %指定用户的 uid 号。
comment		        %指定用户的注释信息。
state		        %用于指定用户是否存在于远程主机
		            %present	   建立
		            %absent		删除
remove		        %当删除用户是删除用户家目录,默认值为no
password	        %此参数用于指定用户的密码。但密码为明文,
		            %可以用openssl password -6 '密码'生成加密字符
generate_ssh_key    %生成sshkey

实例:
ansible all -m user -a 'name=lee'
ansible all -m user -a 'name=lee state=absent'
ansible all -m user -a 'name=lee remove=yes state=absent'
ansible all -m user -a 'name=lee remove=yes group=888'
ansible all -m user -a 'name=lee  group=888 groups="user1,user2"'
ansible all -m user -a 'name=lee groups="user3"'
ansible all -m user -a 'name=lee groups="user1,user2" append=yes'
openssl passwd -6 'westos'
ansible all -m user -a 'name=lee password="$6$F4OBwqoXAigDV.dn$I2OgEPB3kfyl8CPmdh3Y8vKDqewZKrVMIDPPIt8GKnhs/DW4gZHfxrZX5ziQN7rVjISX7l14KwDQHEd.uprlV/"'
ansible all -m user -a 'name=lee generate_ssh_key=yes'

五、相关操作图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/nk298120/article/details/111997589