ansible总结
Ansible 概念
Ansible 是一款开源的自动化运维工具,它通过声明式语言实现 IT 流程自动化,核心价值在于简化复杂环境中的配置管理、应用部署和任务编排。
核心架构
无代理架构:
控制节点通过 SSH(Linux/Unix)或 WinRM(Windows)直接管理目标主机
无需在被管节点安装客户端代理程序(如 Puppet/Chef)
依赖 Python 环境(2.7+ 或 3.5+),通过模块临时传输执行
组件体系
Inventory(清单文件):定义主机分组与变量(INI/YAML 格式)
Playbook(剧本):YAML 格式的任务流程描述文件
Modules(模块):超过 3000 个内置原子操作单元(如 file, yum, template)
Roles(角色):可复用的任务集合目录结构
配置
安装ansible
注意:需要配置epel仓库
yum -y install ansible
Ansible参数:
-i #主机清单文件路径,默认是在/etc/ansible/hosts 使用-i指定主机清单的位置
-m #使用的模块名称,默认使用command模块
-a #使用的模块参数,模块的具体动作
修改配置文件
修改主配置文件: 跳过指纹检测
[root@m01 ~]#grep host_key_checking /etc/ansible/ansible.cfg -n
71:host_key_checking = False
用法
1.配置Inventory主机清单
默认在/etc/ansible/hosts
方法1.指定客户端用户名+密码+端口方式
10.0.0.7 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass='1'
方法2.指定主机方式,使用别名方式管理客户端
web02 ansible_ssh_host=10.0.0.8 ansible_ssh_pass='1'
方法3.使用区间范围表示主机
10.0.0.[7:8] ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass='1'
设置小组: [小组名称]
[webs]
web01 ansible_ssh_host=10.0.0.7 ansible_ssh_pass='1'
web02 ansible_ssh_host=10.0.0.8 ansible_ssh_pass='1'
Ad-hoc
Ansible Ad-Hoc 命令是一种无需编写完整 Playbook 即可快速执行任务的临时命令,适合简单任务或测试场景。通过命令行直接调用模块和参数,实现对目标主机的快速操作。
先做免秘钥推送到目标机器
语法:
ansible <host> -m <module-name> -a "<module-arguments>" [options]
例: 创建文件 file模块
ansible webs -m file -a 'path=/root/ansible.txt state=touch'
常用模块总结
file模块
- name: 创建日志目录
file:
path: /var/log/app
state: directory # 状态:directory/link/absent
recurse: yes # 递归修改权限
copy模块
- copy:
src: 源文件路径(在Ansible控制机上)
dest: 拷贝到目标客户端的路径
owner: 文件属主
group: 文件属组
mode: 文件权限(如’0644’)
content: 直接写入的字符串内容(覆盖文件)
user模块
- name: 创建用户
user:
name: appuser
group: developers
shell: /bin/bash
generate_ssh_key: yes # 自动生成 SSH 密钥
group模块
- name: 创建 Docker 用户组
group:
name: docker
gid: 1001 # 指定 GID
system: yes # 系统组
state: present # 状态:present/absent
db模块
- name: 导入 SQL 备份文件
community.mysql.mysql_db:
name: # 目标数据库名
state: import # 关键操作类型
target: /backups/dump.sql # SQL 文件路径
login_user: admin
login_password: “{{ db_pass }}”
mount模块
systemd/service模块
service:
name: 服务名称
state: [started|stopped|restarted|reloaded]
enabled: 是否开机启动 [yes|no]
yum模块
- yum:
name: 指定包的名称(如nfs-utils)
state: 包的状态动作
ansible-playbook
playbook 是一种用于自动化任务的脚本或配置文件,通常以 YAML 或 JSON 格式编写,包含一系列指令或规则,用于定义自动化流程。
验证 YAML 格式:
ansible-playbook --syntax-check playbook.yml

1257

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



