Ansible部署 Play剧本应用


创建实验主机(控制端和被控制端)
配置SSH实验环境
安装Ansible自动化软件
修改Ansible配置
准备如表-1所示的实验环境,操作系统为RHEL8,配置主机名称、IP地址、YUM源。
在这里插入图片描述

ansible原理


控制端主机自带很多模块(模块就是脚本);
ansible通过ssh远程被管理主机,将控制端的模块(脚本)或命令传输到被管理主机;
在被管理端主机执行模块(脚本)或命令,执行不同的模块或命令可以实现不同的功能;
最后ansible退出ssh远程。
绝大多数模块(脚本)都需要参数才能执行成功!!!类似于shell脚本的位置变量!

所有操作都在cotrol主机上做
准备基础环境

修改/etc/hosts,在文件中手动添加如下内容,修改该文件的目的是做域名解析

192.168.4.253   control      
192.168.4.11   node1           
192.168.4.12     node2      
192.168.4.13    node3           
192.168.4.14      node4          
192.168.4.15    node5
 [root@control ~]# ping  node1               #可以使用ping命令依次ping所有域名    
    给五台被控制机子配置ssh密钥,实现免密登陆(重要)
```python
ssh-keygen   生成密钥
for i   in  node1  node2    node5..... 
do
ssh-copy-id  $i
done
验证:ssh  node1     免密控制
安装ansible
tar -xf   ansible_soft.tar.gz
cd ansible_soft
dnf  -y  install   *

修改主配置文件:
主配置文件说明:
主配置文件ansible.cfg(主配置文件的内容可以参考/etc/ansible/ansible.cfg)
ansible配置文件查找顺序
首先检测ANSIBLE_CONFIG变量定义的配置文件(默认没有这个变量)
其次检查当前目录下的./ansible.cfg文件
再次检查当前用户家目录下~/ansible.cfg文件
最后检查/etc/ansible/ansible.cfg文件

```python
[root@control ~]# mkdir  ~/ansible
[root@control ~]# vim  ~/ansible/ansible.cfg
 内容:[defaults]
inventory = ~/ansible/inventory       
修改主机清单文件(清单文件名必须与主配置文件inventory定义的一致)。
[root@control ~]# vim  ~/ansible/inventory
[test]                    #定义主机组(组名称任意)
node1                    #定义组中的具体主机,组中包括一台主机node1
[proxy]                    #定义主机组(组名称任意),英语词汇:proxy(代理人,委托人)
node2                      #proxy组中包括一台主机node2
[webserver]
node[3:4]                 #这里的node[3:4]等同于node3和node4
[database]
node5
[cluster:children]        #嵌套组(children为关键字),不需要也可以不创建嵌套组
webserver                  #嵌套组可以在组中包含其他组
database

在这里插入图片描述

Ansible ad-hoc应用一

部署好ansible后、测试环境
查看主机列表
[root@control ~]# cd ~/ansible #非常重要
[root@control ansible]# ansible all --list-hosts #查看所有主机列表 如果没有,则配置文件有问题,修改
测试远程主机是否能ping通
ansible all -m ping
语法:ansible 主机 -m command -a “命令”
ansible-doc yum #查看模块帮助
常用模块:
shell模块:
command和shell模块的区别,command不支持bash的特性(bash有哪些特性可以参考Shell课程第一天的PPT),如管道和重定向等功能,但是shell模块可以支持。
不可以使用shell模块执行交互命令,如vim、top等。
[root@control ansible]# ansible test -m shell -a “who” #登陆信息
[root@control ansible]# ansible test -m shell -a “touch /tmp/txt.txt”
#使用shell模块创建文件会有Warning警告提示,正常!!!
script模块 script模块会把-a后面的脚本拷贝到被管理端主机,然后执行这个脚本。
[root@control ansible]# vim ~/ansible/test.sh
#!/bin/bash
dnf -y install httpd
systemctl start httpd
[root@control ansible]# ansible test -m script -a “./test.sh”
#test是主机组的名称,-m调用script模块,-a后面的./test.sh是上面创建脚本的相对路径和文件名
#./是当前目录的意思,在当前目录下有个脚本叫test.sh

很多ansible模块都具有幂等性的特征。
幂等性:任意次执行所产生的影响均与一次执行的影响相同。
file模块
[root@control ansible]# ansible test -m file -a “path=/tmp/file.txt state=touch” #远程test组中所有主机,新建文件,path后面指定要创建的文件或目录的名称
#state=touch是创建文件,state=directory是创建目录
[root@control ansible]# ansible test -m file
-a “path=/tmp/mydir state=directory”
#远程test组中所有主机,创建目录,path后面指定要创建的文件或目录的名称

验证:到node1主机,使用ls /tmp/看看tmp目录下是否有mydir子目录
[root@control ansible]# ansible test -m file -a “path=/tmp/file.txt owner=sshd group=adm mode=0777”
#修改文件或目录权限,path后面指定要修改的文件名或目录名称,owner后面指定用户,group后面指定组,mode后面指定要修改的权限(0777中第一个0代表的是无特殊权限,如SUID、SGID等)

验证:到node1主机,使用ls -l /tmp/file.txt查看文件的详细信息是否正确

[root@control ansible]# ansible test -m file -a "path=/tmp/mydir state=absent"
#state=absent代表删除(删除目录&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值