ansible部署
yum -y install epel-release
yum -y install ansible
修改ip组,后面可以根据组名发布到每个ip下面
vim /etc/ansible/hosts
[elk]
192.168.5.6
192.168.5.24
192.168.5.25
配置公钥并发布到每台机器上面
ssh-keygen -t dsa
vi /etc/ssh/sshd_config
AuthorizedKeysFile .ssh/authorized_keys
PubkeyAuthentication yes
systemctl restart sshd
将公钥分配到每台机器上
ssh-copy-id -i ~/.ssh/id_dsa.pub root@192.168.5.25
测试是否安装成功
ansible elk -m ping --user root
![在这里插入图片描述](https://img-blog.csdnimg.cn/cde3132e9ade496ab78edffa52413547.png)
ansible常用模块
ansible 命令及使用参数
ansible <pattern_goes_here> -m <module_name> -a <arguments>
ansible 匹配模式 -m 模块 -a '需要执行的内容'
匹配模式:即哪些机器生效 (可以是某一台, 或某一组, 或all) , 默认模块为command , 执行常规的shell命令.
-v,--verbose:输出更详细的执行过程信息,-vvv可得到执行过程所有信息。
-i,PATH,--inventory(清单)=PATH:指定inventory(清单)信息,默认/etc/ansible/hosts
ansible elk -f 5 -m ping --user root
设置1-5会有明显的变化
-f NUM,--forks=NUM:并发线程数,默认5个线程。
--private-key=PRIVATE_KEY_FILE:指定密钥文件。
-m NMAE,--module-name=NAME:指定执行使用的模块。
-M DIRECTORY,--module-path=DIRECTORY:指定模块存放路径,默认/usr/share/ansible,也可以通过ANSIBLE_LIBRARY设定默认路径。
-a ‘ARGUMENTS’,--args=‘ARGUMENTS’:模块参数。
-k,--ask-pass SSH:认证密码
-K,--ask-sudo-pass sudo:用户的密码(--sudo时使用)。
-o,--one-line:标准输出至一行。
-s,--sudo:相当于Linux系统下的sudo命令。
-t DIRECTORY,--tree=DIRECTORY:输出信息至DIRECTORY目录下,结果文件以远程主机命名。
-T SECONDS,--timeout=SECONDS:指定连接远程主机的最大超时,单位是秒。
-B NUM,--background=NUM:后台执行命令,超NUM秒后中止正在执行的任务。
-P NUM,--poll=NUM:定期返回后台任务进度。
-u USERNAME,--user=USERNAME:指定远程主机以USERNAME运行命令。
-U SUDO_USERNAME,--sudo-user=SUDO_USERNAME:使用sudo,相当于LInux下的sudo命令。
-c CONNECTION,--connection=CONNECTION:指定连接方式,可用选项paramiko(SSH)、ssh、local,local方式常用于crontab和kickstarts。
-l SUBSET,--limit=SUBSET:指定运行主机。
-l ~REGEX,--limit=~REGEX:指定运行主机(正则)。
--list-hosts:列出符合条件的主机列表,不执行任何命令。
ansible elk --list-hosts
--绿色:执行成功并且不需要做改变的动作
--黄色:执行成功并且对目标主机做变更
--红色:执行失败
ansible模块
文件模块
copy:将本地文件复制到受控主机
file:创建或者和删除远程主机上的文件或者目录
lineinfile:替换文件中的内容,添加内容到指定文件位置
synchronize:使用rsync同步内容
软件包模块
package:使用操作系统本机的自动检测软件包管理器管理软件包
yum:使用yum软件包管理器管理软件包
apt:使用apt软件包管理器管理软件包
dnf:使用dnf软件包管理器管理软件包
pip:从PyPI管理Python软件包
系统模块
firewalld:使用firewalld管理任意端口和服务
reboot:重新启动计算机
service:管理服务
user:添加、删除和管理用户账户
Net Tools模块
get_url:通过http、https或者ftp下载文件
nmcli:管理网络
uri:与WEB服务交互
常用模块及使用
1.user模块
参数 |
解释 |
name |
要创建、修改、移除的用户名 |
password |
设置用户密码。此处只能使用加密密码作为值 |
system |
设置为yes表示创建一个系统用户,只能用于创建不能用于修改已有用户为系统用户 |
state |
创建用户(present)还是删除用户(absent)。 默认为present |
createhome |
创建家目录,或者已有的用户但家目录不存在也会创建。设置为no则不创建家目录 |
home |
指定要创建的家目录路径 |
move_home |
如果设置为yes,则"home="则表示将家目录移动到此选项指定的路径下 |
uid |
设置用户的uid |
group |
设置用户的primary group |
groups |
将用户加入到辅助组列表中。如果设置"groups=", 则会将此用户从所有辅助组中移除 |
shell |
设置用户的shell |
force |
配合’state=absent’时,等价于’userdel --force’, 即强制删除用户、家目录和邮件列表 |
remove |
配合’state=absent’时, 等价于’userdel --remove’, 即删除家目录和邮件列表 |
update_password |
user是幂 等模块,"always"将总是修改密码。"on_.create"将只在创建用户时设置密码 |
临时命令使用user模块来确保newbie用户存在于node1上,并且其UID为4000
ansible elk -m user -a 'name=newbie uid=4000 state=present'
登录到elk这个机器上
id elk查看id
设置elk用户的密码
ansible elk -m user -a 'name=newbie password=docker123'
创建无家目录,不能登录的用户
ansible node1 -m user -a 'name=cs_user create_home=no shell=/sbin/nologin state=present'
2.shell模块
ansible elk -m shell -a "bahs /root/1.sh"
elk主机清单
-a 指定执行的命令
通过shell模块删除指定用户
ansible elk