简介
基于python开发,能够实现批量系统配置、程序部署、运行命令等功能的自动化运维工具
基本框架
Ansible :运行在中央计算机上;
Connection Plugins :连接插件,主要用于本地与操作端之间的连接与通信;
Host Inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
Modules:核心模块、自定义模块等等;
Plugins :使用插件来完成记录日志、邮件等功能;
Playbooks:执行多任务,通过 SSH 部署模块到节点上,可多个节点也可以单个节点
安装
sudo apt install -y ansible
# 验证安装
ansible --version
Inventory
Ansible 能够同时对单台或多台机器亦或部分机器操作是通过Inventory 来发现机器
Inventory 默认保存在 /etc/ansible/hosts 配置文件中
# 主机连接
ansible_connection 连接到主机的类型,任何可能的连接插件名称,例如,SSH 协议类型中有:ssh、smart 或 paramiko
# 一般连接
ansible_host 连接的主机名称
ansible_port ssh端口号
ansible_user 默认 ssh用户名
# 具体的 SSH 连接
ansible_ssh_pass ssh密码
ansible_ssh_private_key_file ssh使用的私钥文件
playbook
简介
一种格式为yaml的声明式配置文件
用于ansible配置主机部署相关的资源(部署机器、部署动作等)
基本结构
Playbook 是由一个或多个 task 组成
一个task里面包含若干个模块
---
- hosts: host1,host2,... # 表示一个或多个主机或组
remote_user: root # 表示远程登录用户名
become: yes # 表示允许权限提升,而默认提权用户为 root, 如果不希望以 root 身份执行任务,则要用到另一个关键词 become_user, become_user 决定的是执行任务的用户身份
vars: # 变量的定义
http_port: 80
tasks: # 任务组
- name: Install the package "bc" # 一般一个任务一个name
apt:
name: bc
state: present
handlers:
- name: restart bc
service:
name: bc
state: restarted
...
简单上手
---
- hosts: localhost
tasks:
- name: test connection
ping: # ping 模块
...
$ ansible-playbook ping.yaml
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [test ping] ***************************************************************
ok: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0