实验环境
编写实验简易脚本
创建用户脚本
vim user.sh
免密登陆脚本
vim key.sh(给root和westos用户全部设置免密登陆)
在ansible主机切换至普通用户配置好清单和ansible.cfg
给这个普通用户添加免密登陆
mkdir /home/westos/.ssh(/home/westos是这个普通用户的家目录)
cp /root/.ssh/id_rsa.pub /home/westos/.ssh
cp /root/.ssh/id_rsa /home/westos/.ssh/
chown westos.westos /home/westos/.ssh/id_rsa
chown westos.westos /home/westos/.ssh/id_rsa.pub
监控脚本
vim test.sh
用户授权脚本
vim sudo.sh
Ansible实现管理的方式
Ad-Hoc:利用ansible命令直接完成管理,主要用于临时命令使用场景
playbook:ansible脚本,主要用于大型项目场景,需要前期规划
Ad-Hoc执行方式帮助
ansible-doc:现实模块帮助的命令
格式
ansible-doc 参数 模块
常用参数
-l :列出可用模块
-h :显示指定模块的playbook片段
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密码
ansible的基本代表信
绿色:执行成功但对远程主机做任何改变
黄色:执行成功并对远程主机作改变
红色:执行失败
Ansible脚本中的常用模块
command
常用参数
chdir:执行命令前先进入到指定目录
cmd:运行命令执行
creates:如果文件存在将不运行
removes:如果文件存在将运行
free_from:在远程主机中执行的命令,此参数不需要参加
例如
开启监控
ansible all -m command -a ‘chdir=/etc creates=passwd cat passwd’(在清单中的所有主机中/etc/passwd 如果存在就不执行cat /etc/passwd 动作)
ansible all -m command -a ‘chdir=/etc removes=passwd cat passwd’(如果存在就执行)
注意:Linux中的很多通配符在command中不能识别
虽然执行了,但是文件未被删除
使用shell模块,删除成功
shell模块
常用参数
chdir:执行命令前先进入到指定目录
cmd:运行命令执行
creates:如果文件存在将不运行
removes:如果文件存在将运行
free_from:在远程主机中执行的命令,此参数不需要参加
executable:指定执行环境,默认为sh
例如
ansible all -m shell -a ‘executable=sh ps ax | grep $$’
ansible all -m shell -a ‘executable=bash ps ax | grep $$’
script
在ansible主机中写好的脚本能在受管机直接运行
vim script.sh
chmod +x s