Ansible入门学习之基础元素介绍

一、Ansible目录结构介绍

1.通过rpm -ql ansible获取ansible所有文件存放的目录

有配置文件目录 /etc/ansible/

执行文件目录 /usr/bin/

其中 /etc/ansible/ 该文件目录的主要功能是 inventory主机信息配置,ansible工具功能配置。

ansible自身的配置文件是ansible.cfg,其中所有的配置内容均可以在命令行通过参数的形式传递或定义在playbooks中。

二、Ansible命令用法详解

1.Ansible命令行执行的方式有Ad-Hoc(临时命令执行)、Ansible-playbook(Ad-Hoc的集合)两种方式,web化执行方式有Tower(10台以内免费)。

2.Ansible默认使用公私钥认证。

ssh-keygen -N " " -b 4096 -t rsa -C "[email protected]" -f /root/.ssh/stanley.rsa

随机生成公私钥对

ssh-copy-id -i /root/.ssh/stanley.rsa root@localhost

为本机添加密钥认证

3.Ansible 的命令格式:ansible <host-pattern> [options](可选项)

其中<host-pattern> 是Inventory中定义的主机或者主机组,一般可以是ip,hostname等

例如:ansible all -m ping -u test 表示以test用户的身份执行ping命令

ansible all -m ping -u test --sudo 表示以test的身份sudo到root身份执行ping存活检测

ansible all -m ping -u test -b 表示以test身份至root身份执行ping进行存活检测,上面的同效果命令的操作在新版本中已经被-b所替换

三、Ansible命令使用场景介绍

1.ansible一般用在非固化或者临时一次性的操作的命令中(非固化/临时一次性操作:没有规律或者是临时要做的任务)

例如:ansible web1 -m ping 检查服务器web1的存活情况

2.ansible-galaxy 为github的pip功能

命令格式如下:

3.ansible-pull(默认使用push模式)

适用的场景是:数量巨大的机器需要配置;在刚启动没有网络的主机上运行ansible

4.ansible-doc 模块名 用来查看文档的用法说明

5.ansible-playbook 通过读取预先编写的playbook文件实现批量管理,是ansible的任务集

例如:ansible-playbook playbook.yml 表示执行playbook.yml中所有的任务集合

6.ansible-vault 用于配置文件加密

例如:ansible-vault encrypt a.yml 加密a.yml

7.ansible-console 用来虚拟一个终端

四、Ansible Inventory配置及详解

1.定义主机和组

组名\],支持将同一个主机归并到多个不同的组中且以行作为单位分割配置 ![](https://i-blog.csdnimg.cn/direct/284883c4ce7a42ceb322a2dc21cc5cf3.png) 2.定义主机变量 ![](https://i-blog.csdnimg.cn/direct/8f19547c8e1841f88560b06a5afb1d61.png) 上述示例是修改web服务的端口为808 3.自定义组变量 ![](https://i-blog.csdnimg.cn/direct/e90f612806c245398a6b5764b7492828.png) 4.其他inventory参数列表 ![](https://i-blog.csdnimg.cn/direct/91883de5b14a46368473eb461ea0cb9f.png) #### 五、Ad-Hoc命令集 1.使用场景: > 空闲时期关闭所有不必要的服务器并对其进行健康检测 > > 临时更新Apache和Nginx的配置文件并将其分发到所有需要更新该配置的web服务器 > > 需要使用Ansible-playbook的场景 > > 对新的服务器进行安装完系统之后的一些列固化的初始工作 > > 定期对生产环境发布更新程序代码 2.Ad-Hoc命令集用法介绍 ![](https://i-blog.csdnimg.cn/direct/5aa0568aeed7407383bbdd53b5a446c0.png) 例如:**ansible web --list** 表示列出web组所有的主机列表 **ansible 10.20.40.61 -B 5 -P 2 -T 2 -m command -a 'sleep 20' -u root** 上述命令表示以root执行sleep 20,设置最大连接超时时长为2且为后台运行的模式,执行过程中每2秒输出依次进度如果5s还没有还未执行完就终止该任务。 为所有的服务器安装ntp服务并设置为开机启动 **ansible apps -s -m yum -a ''name=ntp state=present''** **ansible apps -m service -a "name=ntpd state=started enabled=yes"** 上述这两条命令分别表示给所有主机安装ntp服务然后启动ntp服务并设置为开机启动 #### 六、Ad-Hoc组管理和特定主机变更 **1.一般我们需要会将负责相同场景应用的主机划分为一个组便于统一管理,这是就需要组管理并且可以对组中特定的主机进行变更。** 2.组配置需要编辑/etc/ansible/hosts,下图是简化后的web服务架构: ![](https://i-blog.csdnimg.cn/direct/d37e09b9de9e4ca7ae8ee6ece62840ce.png) **3.配置Proxy和web servers实践** **ansible proxy -m yum -a "name=nginx state=present"** 利用ansible安装nginx **ansible app -m yum -a "name=nginx state=present"** **ansible app -m yum -a "name=php state=present"** 安装nginx和php ...... 同上述命令安装 mysql-python python-setuptools依赖包 **ansible app -m pip -a "name=django state=present"** 安装Django 同上述安装nginx命令安装后端的数据库redis 以下命令为安装mariadb的命令: ![](https://i-blog.csdnimg.cn/direct/9289cae663f742e78d69e9af801aa42c.png) 以上配置命令即可配置完所有主机的应用需求 **4.Ad-Hoc特定主机变更** **通过limit参数限定主机做变更** **ansible app -m command -a "service ntpd status" --limit "192.168.37.158"** 上述命令的作用是在app组中查看192.168.37.158的状态 **ansible "192.168.37.158:192.168.37.159" -m command -a "service ntpd status"** 上述命令的作用是查看上述两个ip地址对应的主机的ntp服务的状态 #### 七、Ad-Hoc用户与组管理 > 1.ansible系统用户模块 > > linux系统用户管理:user > > windows系统用户管理:win_user > 2.与用户相关的应用场景 > > 新增用户:增加test用户并为其创建家目录 > > **ansibledb -m user -a "name=test shell=/bin/bash groups=admins,testgroup append=yes home=/home/test/ state=present"** > > 修改用户属组 > > **ansibledb -m user -a "name=test groups=testgroup append=no"** > > 修该用户的属性 > > **ansibledb -m user -a "name=test expires=19999999"** > > 删除用户 > > **ansibledb -m user -a "name=test state=absent remove=yes"** > > 变更用户密码 > > **ansible -m user -a "name=test shell=/bin/bash password=igrjiFDF update_password=lovexiao"** > > **password后面的密码是加密后的密文** #### 八、应用层用户管理 1.新增mysql用户test **ansible db -m mysql_user -a 'login_host=localhost login_password=xiao login_user=root name=test password=testxiao priv=zabbix.\*:ALL state=present'**

相关推荐
s_little_monster5 分钟前
【Linux】线程互斥之线程加锁
linux·运维·经验分享·redis·笔记·学习·学习方法
阿里云云原生19 分钟前
AI 时代,为什么编程能力≠ 开发门槛
云原生
来鸟 鸣间30 分钟前
pidstat指令分析
linux
计算机视觉农民工32 分钟前
机器学习有多少种算法?当下入门需要全部学习吗?
学习·算法·机器学习
长流小哥38 分钟前
Linux网络协议栈深度解析:从数据封装到子网划分的底层架构
linux·网络协议·架构
冰冷的bin1 小时前
【Linux】解决ssh连接失败问题
linux·ssh
MobiCetus1 小时前
Linux Kernel 9
java·linux·运维·服务器·windows·ubuntu·gnu
一个小白5551 小时前
Linux,redis群集模式,主从复制,读写分离
linux·运维·数据库·centos
时71 小时前
linux常用命令记录
linux·运维
LVerrrr1 小时前
Missashe考研日记-day22
学习·考研