Ansible 帮助简化 IT 的自动化运维,替代人工重复性的工作,应用于包括云环境的主机部署, IT 的配置管理,应用部署等等场景。
l 简单
l 强大
l 无代理
l Ansible 的”幂等”性 ,
当各个团队都在进行自动化且彼此之间需要协作时 , 就需要一个自动化平台
l 编排
l 配置管理
l 应用部署
l 初始化安装
l 持续集成
l 安全合规
l ……
l Control node – 安装了 Ansible 并运行 playbook 对其他主机进行管理的主机
l Managed node– 被 Ansible 管理的系统或者设备(比如: AIX , IBM i , Linux , Windows )
l Inventory – 被管理节点列表
l Modules – Ansible 基本功能单元
l Tasks – 由 Ansible modules 组合成一系列动作列表去完成特定的管理任务
l Playbooks – 一系列 tasks 构成的列表,存放在 YAML 格式的文件中
Red Hat Ansible Tower (开源版本为 AWX )
企业级 Ansible 图形化管理工具。 Tower ( AWX )带来的好处:
l 用户可以更简单直观地使用 Ansible
l 通过不同的角色把 Ansible 管理者和使用者分开
l 对 Ansible Playbook 运行情况进行记录和监控,实时掌握系统的运维状态
l 提供 Rest API 供第三方程序进行调用可扩充
Red Hat Ansible Engine
Ansible 核心功能
Red Hat Ansible Endpoints
被管理节点(包括 IBM Power Systems , IBM Z Systems , X86 system , windows 等)
准备 Redhat ppc64le 7 的系统光盘并定义 repo 资源(本例在 Power Linux 环境中)
yum 会自动寻找相关的系统依赖包进行安装
安装结束后,输入如下命令可以测试 ansbile 是否安装成功:
ansible –version
安装 epel 源
yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y
如果上述 epel 速度慢可以用如下的阿里的源
wget http://mirrors.aliyun.com/repo/epel-7.repo
mv epel-7.repo /etc/yum.repos.d/
安装 pip
yum install python-pip python-devel -y
使用 pip 安装 ansible
pip install ansible
如果默认的 pip 源速度慢,可以使用如下 pip 源代替
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ansible
测试 ansible 是否安装成功
ansible --version
从
https://www.ibm.com/support/pages/aix-toolbox-linux-applications-downloads-alpha
拷贝脚本 yum.sh 到 AIX 系统并执行 yum.sh 安装 yum 。
安装 yum 后,就可以用 yum 安装 AIX 下的 Ansible :
用命令 ansible –version 测试 ansible 是否安装成功。
安装 Ansible 后,需要在 ansible control node 上配置 SSH 连接到被管理节点。可以用如下命令生成 ssh 公钥和私钥
ssh-keygen -t rsa
将公钥拷贝到被管理节点 (Linux 或者 AIX) :
ssh-copy-id root@managed_node_IP
测试无密码 ssh 登陆是否有效:
ssh root@ managed_node_IP
在执行 playbook 之前,需要对 Ansible 的 Inventory 文件进行配置。如下是一个简单的 Inventory 文件:
[webservers]
node1
node2
[dbservers]
node3
[php:children]
webservers
dbservers
其中定义了三个组, webservers , dbservers , php 。 Webservers 包括 node1 和 node2 , dbservers 包括 node3 ,而 php 包括了 webservers 和 dbservers 两个组,所以包括了 node1 , node2 和 node3.
另外可以在 Inventory 文件中定义变量,常用的有如下几种:
ansible_ssh_host
将要连接的远程主机名 . 与你想要设定的主机的别名不同的话 , 可通过此变量设置 .
ansible_ssh_port
ssh 端口号 . 如果不是默认的端口号 , 通过此变量设置 .
ansible_ssh_user
默认的 ssh 用户名
ansible_ssh_pass
ssh 密码 ( 这种方式并不安全 , 我们强烈建议使用 --ask-pass 或 SSH 密钥 )
ansible_sudo_pass
sudo 密码 ( 这种方式并不安全 , 我们强烈建议使用 --ask-sudo-pass)
ansible_sudo_exe (new in version 1.8)
sudo 命令路径 ( 适用于 1.8 及以上版本 )
ansible_connection
与主机的连接类型 . 比如 :local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断 'ssh' 方式是否可行 .
ansible_ssh_private_key_file
ssh 使用的私钥文件 . 适用于有多个密钥 , 而你不想使用 SSH 代理的情况 .
Ansible 已经内建了对 AIX 系统的基本支持,支持 AIX 的 Ansible module 可以从
https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html
搜索 aix 关键字,主要包括如下几个模块:
aix_devices – Manages AIX devices
aix_filesystem – Configure LVM and NFS file systems for AIX
aix_inittab – Manages the inittab on AIX
aix_lvg – Manage LVM volume groups on AIX
aix_lvol – Configure AIX LVM logical volumes
installp – Manage packages on AIX
mksysb – Generates AIX mksysb rootvg backups
在安装了 Ansible 之后,就可以直接使用以上模块对 AIX 系统进行管理。
在网站
中点击 Search ,搜索关键字“ AIX ”,可以找到支持 AIX 的 Ansible role 。
然后用 ansible-galaxy 安装到 ansible 的控制节点,例如:要安装角色 ansible_role_aix_lvm ,可以在 Ansible 的控制节点上执行:
ansible-galaxy install d_little.ansible_role_aix_lvm
角色会被默认安装到用户目录的 .ansible/roles 下
下面以使用 Ansible AD-HOC 模式下安装 Linux 和 AIX 软件对比两种系统下 Ansible 的异同
l Power Linux
配置好 Inventory 后,使用 Ansible 的 YUM 模块安装软件 emacs :
其中 rhelgroup 为 Inventory 文件 hosts 中定义的 redhat Linux group
l AIX
配置好 Inventory 后,使用 Ansible 的 YUM 模块安装软件 nim server:
其中的 aixgroup 为 Inventory 文件 hosts 中定义的 AIX group 主机, -m installp 表示使用 ansible installp 模块。 Ansilbe module 的具体参数含义可以通过 ansible-doc installp 在线文档来进行查看具体的参数含义。
从上面的举例可以看出,不管管理 AIX 还是 Power Linux , Ansible 是通过不同的 Module 来进行管理的。 Module 是最基本的 Ansible 基本功能模块。 Ansible 对不同的操作系统或者设备的支持也是通过开发不同的 Module 进行支持的。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞4
添加新评论0 条评论