1 ansible基本架构

上图为ansible的基本架构,从上图可以了解到其由以下部分组成:
• 核心:ansible
• 核心模块(Core Modules):这些都是ansible自带的模块
• 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
• 插件(Plugins):完成模块功能的补充
• 剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
• 连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
• 主机群(Host Inventory):定义ansible管理的主机
2 ansible安装
可以访问ansible官网,查看对应操作系统下载版本,以下以ubuntu系统为例
https://docs.ansible.com/
基于ubuntu
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible
安装完成后主要有一下7个命令
1) ansible
-m:要使用的模块名称。
-a,–args:制定模块所需的参数。
-u:制定连接的用户名。
-h,–help显示帮助内容。
-k, 指定输入密码
-I, 指定加载的hosts文件目录,默认是加载/etc/ansible/hosts
-S 大S,指定使用su命令
-f 指定fork出的并行处理进程数,默认值是5。
-o 使用精简的输出
-vvvv 显示详细输出
ansible all -m ping
ansible all –I ./hosts –m shell –a ‘date’ -k
2) ansible-config
配置文件,默认在/etc/ansible/ansible.cfg
Inventory 主机清单
Module_utils 指定模型工具
Remote_tmp 远端服务器临时目录存放
Remote_port 远端服务器端口
/log+path 注释掉前面#号,才会存储日志
Transport 连接方式(默认为smart)
Poll_interval 异步执行任务时多久检查一次任务装填
3) ansible-galaxy
类似于github,去官网拉去所需要的模块
4) ansible-pull
将模块推到仓库存储
5) ansible-doc
帮助文档
ansible-doc –l 列出所有自己下载的模块
ansible-doc –s xx模块名 列出该模块的使用方法
6) ansible-lint
对playbook语法进行检查的命令
7) ansible-playbook
ansible核心功能
3 ansible免密登录
a. 生成秘钥
ssh-keygen –t rsa
b. 将秘钥拷贝到预管理节点上
ssh-copy-id –I /root/.ssh/id_rsa.pub xxx
即可完成主机之间的免密登录
4 ansible常用模块
4.1 Ping模块
4.2 setup模块
主要用于获取主机的相关信息
ansible all –m setup –a ‘filter=ansible_*_mb’ 获取内存信息
ansible all –m setup –a “filter=ansible_eth[0-2]”
4.3 file模块
force 强制创建软连接
group
mode 定义文件权限
owner 定义文件/目录所属的组
path
recurse 递归
src 源目录
dest 目标目录
state 状态
file 文件不存在时,也不创建
link 软连接
hard 硬连接
touch
absent 删除目录,取消连接
ansible all –m file –a “path=xxx state=touch”创建文件
ansible –i ./hosts chen-2 –m file –a “src=xxx dest=xxx state=link”创建软连接
ansible –I ./hosts chen-2 –m file –a “path=xxx state=absent” 删除
4.4 copy模块
backup 覆盖之前将备份
content
dest
directory_mode 递归
others
src
validate 验证
ansible –I hosts chen-2 –m copy –a “src=xxx dest=xxx owner=root mode=0644”
**
**
4.5 service模块
arguments 给命令提供一些选项
enabled 是否开机启动
name 服务名称
pattern 定义模式
runlevel 运行级别
sleep 休眠
state 状态(started/sopped/reload/restarted)


4.6 cron模块
$ crontab –e 打开任务计划
backup 对远程主机上原计划内容修改前做备份
corn_file 该文件替换远程主机上的cord.d目录下的任务计划
job 要执行的任务,依赖于state
name
specia;_time 指定执行时间
state 状态
user 指定执行的用户
ansible –i hosts chen-2 –m cron –a “name=’touch a new file’ special_time=rebbot
job=/home/chen/xx.sh”
ansible –i hosts chen-2 –m cron –a “name=’touch a new file’ special_time=rebbot job=/home/chen/xx.sh corn_file=’test ansible’”
4.7 yum及get_url模块
不推荐使用,anshible只使用该模块进行下载时,下载速度比较慢,一般多使用shell脚本。

5 ansible-playbook
5.1 编写第一个nignx.yml文件
---
-

最低0.47元/天 解锁文章
231

被折叠的 条评论
为什么被折叠?



