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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值