文章目录
1.ansible基础
1.1什么是ansible
ansible 是推出的一款IT自动化和DevOps软件
ansible 是基于Python研发,糅合好的老运维工具的优点,实现了批量操作系统配置,批量程序部署,批量运行命令等功能
ansible可以实现
自动化部署APP
自动化管理配置项
自动化持续交付
自动化(AWS)云服务管理
1.2 ansible的优点
1.3ansible 的特性
模块化设计 调用特定的模块完成特定任务
基于Python语言实现huanjhuanj
-paramiko
-PyYAML(半结构化语言)
-Jinja2
其模块支持JSON等标准输出格式,可以采用任何编程语言重写
部署简单@[toc]@[toc]@[toc]
主从模式工作
支持自定义模块
易于使用
支持多层部署
支持异构IT环境
1.4工作流程
1.5ansible 命令基础
ansible 主机集合 -m 模块名称 -a 模块参数
- 主机集合 主机名或分组名,多个使用"逗号"分隔
- -m 模块名称,默认command模块
- -a or --args 模块参数
- 其他参数
-i inventory文件路径,或可执行脚本
-k 使用交互式登录密码
-e 定义变量
-v 显示详细信息
ansible all --list-hosts 列出要执行的主机
ansible all -m ping -k 批量检测主机
创建一对秘钥
cd /root/.ssh
ssh-keygen -t rsa -b 2048 -N '' -f key
ssh-copy-id -i key.pub 主机名称 给所有主机部署秘钥
1.6 inventory 扩展参数
参数说明
子组定义
[app:children]
web
db
变量引用
[other]
cache ansible_ssh_port=222 ssh 端口改变
[all:vars]
ansible_ssh_private_key_file="/root/.ssh/key" 定义公钥
1.7动态主机
2批量配置管理
2.1 ansible-doc 和ping模块
ansible-doc
- 模块的手册相当于与shell的man 很重要
- ansible-doc -l 列出所有模块
- ansible-doc modulename 查看帮助
ping模块
- 测试网络连通性,ping模块没有参数
- 注 测试ssh 的连通性
- ansible host-pattern -m ping
2.2command 模块
command 是默认的 可以用
ansible all -a ‘命令’
2.3shell 模块
shell 模块范围广
2.4script 模块
2.5 yum模块
yum模块
使用yum包管理器来管理软件包
name : 要进行操作的软件包名字
state : 动作 (installed , removed)
install === installed
remove ==== removed
ansible db -m yum -a 'name=包名(mariadb-server) state=installed'
给所有db主机安装mariadb
ansible db -m yum -a 'name=lrzsz state=removed'
给所有db主机删除lrzsz
2.6service 模块
2.7copy模块
复制文件
ansible all -m copy -a 'src=/etc/resolv.conf dest=/etc/resolv.conf '
复制文件夹
ansible all -m copy -a 'src=/etc/yum.repos.d dest=/etc/'
2.8 lineinfile 模块
2.9 replace 模块
2.10 setup 模块
setup 模块
主要用于获取主机信息 playbooks里经常会用的另一个参数 gather_facts与该模块相关 setup模块经常用的是filter 参数
ansible db -m setup
全部信息
ansible cache -m setup -a 'filter=ansible_distribution'
filter 过滤所需信息
```bash