浪潮商用机器有限公司 技术支持部 钟良
本文介绍了 Ansible 的特性以及如何在浪潮商用机器的 K1 Power Linux 服务器上使用 Ansible 管理和部署软件的先决条件以及具体操作。
Ansible 是一种流行的 IT 自动化引擎,可自动执行繁琐、重复或复杂的任务,例如配置管理、云配置、软件部署和服务内编排。
Ansible 用于多层部署,它将所有 IT 基础架构建模为一个部署,而不是单独处理每个部署。 Ansible 架构中没有代理,也不需要使用自定义安全架构。部署是简单的简单英语,类似于 Ansible 中使用的称为 YAML 的语言,它代表 “YAML 不是标记语言 ” 。
使用 Ansible 非常容易;它会将名为 “Ansible 模块 ” 的小程序推送到您的节点以进行连接。它可以使用 SSH 代理进行部署和连接以执行模块,然后在完成后将其删除。不需要服务器、守护进程或数据库,这些模块可以驻留在机器中的任何位置。您需要使用任何文本编辑器或终端程序以及版本控制系统来管理内容的更改。 Ansible 内置了超过 750 个模块。
在 Ansible 中支持密码,但是,您可以将 SSH 密钥与 ssh-agents 结合使用,作为使用 Ansible 的方法之一。您可以创建任何用户帐户,并且需要 root 用户。要配置哪些机器可以访问哪些主机,有一个名为 “authorized_key” 的模块。
您可以以简单的文本格式将机器添加到 Ansible 并管理您的库存。它可以使用来自其他来源的库存和变量信息,例如 Rackspace 、 EC2 和 Openstack 等。
如果您需要编写代码,那么您也可以在 Python 、 Ruby 和 Bash 等返回 JSON 的语言中使用 Ansible 。您可以编写模块、 API 和插件。
Playbooks 是一种简单而强大的自动化语言,用于一次性编排多个基础设施。这可以在 Ansible 中完成。
Ansible 是最受欢迎的 DevOps 工具,用于编排、自动化、配置和管理 IT 基础设施。在 DevOps 中使用 Ansible 的好处是可以根据需求进行响应和扩展。以下是 Ansible 在 DevOps 中的好处,
更快的软件反馈速度
可靠部署
自动化部署
版本控制和配置管理
IT 基础架构的编排
Ansible 非常有用,当有 4 或 5 个 Web 服务器要配置和部署,以及有 4 个以上的数据库服务器要配置和部署时 Web 服务器中有应用程序,它连接后端的数据库服务器。现在传统的情况是需要您单独配置这些服务器并对其进行管理。
但是,这些服务器将具有各种应用程序更新。如果有更多的服务器并且它们的配置不会相同,即使是系统管理员也无法处理。这些任务在执行和管理服务器数量方面很复杂,而无需为系统管理员以及开发应用程序的开发人员投入大量精力。想象一下组织拥有的其他服务器,例如 DNS 、 NTP 、 AD 、电子邮件等,这就是 Ansible 常用的地方。基础设施自动化和编排可以由 Ansible 完成。 Ansible 可以一次性处理和管理所有类似的服务器。
无代理——客户端 / 服务器上没有部署代理或软件来与 Ansible 一起工作。连接可以通过 SSH 或使用 Python 完成。
Yaml 语言——使用 Yaml 语言来配置和部署基础设施非常简单。
模块化—— Ansible 使用模块来自动化、配置、部署和编排 IT 基础设施。 Ansible 内置了大约 750 多个模块。
高效 – Ansible 无需服务器、守护进程或数据库即可工作。
功能 – Ansible 具有很多功能,可用于在很短的时间内管理操作系统、 IT 基础设施、网络、服务器和服务。
安全和一致 - 由于 Ansible 使用 SSH 和 Python ,因此非常安全,操作完美无缺。
可靠 – Ansible Playbook 可用于编写程序或模块,并可用于管理 IT ,没有任何缺点。
性能 - Ansible 的性能非常好,并且延迟很小。
低开销——由于它是无代理的,不需要任何服务器、守护进程或数据库,它可以在系统中提供大量空间,并且在部署方面开销低。
简单 - 使用起来非常简单,并受 YAML 支持
Ansible 可以做什么?
配置管理——详细记录和更新企业软硬件信息,从而保持产品性能的一致性。
应用程序部署 - 当您使用 Ansible 定义和管理应用程序时,可以在 Ansible 中管理从开发到生产的应用程序。
编排 - 整体管理以及配置如何交互。
安全性和合规性 - 在 Ansible 中定义策略时,可以在整个基础架构中部署广泛的安全策略
供应 - 帮助自动化和管理流程
它由清单表、 API 、插件和模块组成,用于配置、管理、自动化和编排流程。
它可以从 Playbook 软件、公共 / 私有云和配置管理数据库中获取输入,以进行网络管理主机或服务器、操作系统和管理安全性
使用最新的 redhat 8.4 的操作系统
[root@bastion ansible]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.4 (Ootpa)
在 K1 Power Linux 服务器上运行
[root@bastion ansible]# cat /proc/cpuinfo
processor : 0
cpu : POWER9 (architected), altivec supported
clock : 2134.000000MHz
revision : 2.2 (pvr 004e 1202)
processor : 1
cpu : POWER9 (architected), altivec supported
clock : 2134.000000MHz
revision : 2.2 (pvr 004e 1202)
由于核数较多,未完全展示输出。
本次测试使用的K1 power linux服务器为如下FP5280:
浪潮FP5280G2是为数据中心及应用优化,搭载全新POWER9处理器的双路机架式服务器。单台服务器提供更多线程数,开启更多数据库实例,协助降本增效。同时CPU的大L3cache可以有效提高数据库读缓存命中的概率,从而提高读效率最高支持1TB高速企业级内存,通过搭配不同的前置、内置和后置模组实现配置多变。
该产品将优秀的设计理念运用在性能、存储、扩展方面,在新一代云计算、大数据、深度学习等IT应用具有突出表现。
本次运行的环境如下图所示,管理节点可以有多个,需要在管理节点上预先安装 python,无需安装其他的 agent。
[root@managed~]# yum install python3
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Package python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.ppc64le is already installed.
如果是多个节点,可以在被管理节点的列表中加入多行主机名或 ip
Ansible 的软件安装非常简单,
使用 yum install ansible 在管理节点上部署 ansible 软件。
使用的 yum 源如下:
[epel]
name=Extra Packages for Enterprise Linux - $basearch
baseurl=http://mirrors.aliyun.com/epel/8/Everything/ppc64le/
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
查看安装完成的 ansible 版本为 2.9.27
[root@bastion ansible]# ansible --version
ansible 2.9.27
config file = /opt/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Mar 18 2021, 09:10:27) [GCC 8.4.1 20200928 (Red Hat 8.4.1-1)]
然后配置 ansible 软件如下
产生 key 文件,
[root@bastion ansible]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? Y
使用 ssh-copy-id 将 key 复制到受管理服务器上
[root@bastion ansible]# ssh-copy-id root@172.20.50.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.20.50.10's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@172.20.50.10'"
and check to make sure that only the key(s) you wanted were added.
创建指定 ansible 的目录,此次 demo 创建在 /opt/ansible 下, 创建如下文件
[root@bastion ansible]# ls -ltr
total 24
-rw-r--r-- 1 root root 19984 Dec 1 08:46 ansible.cfg
-rw-r--r-- 1 root root 18 Dec 1 08:47 hosts
在 ansible.cfg 中加入
inventory = /opt/ansible/hosts
[root@bastion ansible]# cat hosts
[managed]
172.20.50.10
使用如下脚本测试连通性
[root@bastion ansible]# ansible all -m ping
172.20.50.10 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
使用 yaml 编写的 playbook 在管理节点上运行远程脚本
[root@bastion ansible]# ansible-playbook httpd.yaml
PLAY [install httpd]
TASK [Gathering Facts] **
ok: [172.20.50.10]
TASK [yum] *
changed: [172.20.50.10]
TASK [service] **
ok: [172.20.50.10]
PLAY RECAP **
172.20.50.10 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
被管理节点上验证通过
[root@managed]# yum install httpd
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:21:53 ago on Wed 01 Dec 2021 04:44:14 PM CST.
Package httpd-2.4.37-39.module+el8.4.0+9658+b87b2deb.ppc64le is already installed.
Dependencies resolved.
Nothing to do.
Complete!
此次 demo 验证了在 K1 Power Linux 服务器上使用 ansible 进行远程管理的可行性,以及展示了通过 ansible command 和 ansible playbook 的简单样例。
Reference Link
https://docs.ansible.com/ansible/latest/dev_guide/overview_architecture.html
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论0 条评论