文章目录
一、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'
五、相关操作图