Ansible 是一个免费的开源自动化和配置工具。在 RHEL 9 上,ansible 核心包在默认软件源(AppStream)中可用。我们不需要像 Ansible Engine 或 EPEL 那样启用任何额外的软件源。

先决条件

  • 最小话安装的 RHEL 9
  • 具有管理权的 sudo 用户
  • 本地配置的软件源或订阅

(1) 使用 dnf 命令安装 Ansible

打开终端并在 dnf 命令下运行

$ sudo dnf install -y ansible-core

dnf-command-install-ansible-core

安装了Ansible及其依赖项后,查看版本

$ ansible --version

Ansible-Version-check-RHEL9

(2) 安装测试

为了测试 ansible 的安装,我们将使用 ansible 控制节点(RHEL 9)之外的一个远程 linux 系统。

  • Ansible Control Node – RHEL 9 – 192.168.1.163
  • Ansible Managed Node – Ubuntu 22.04 – 192.168.1.167

为用户生成 SSH 密钥(在我的例子中是 linuxtechi)并将 SSH 密钥共享给托管节点。

$ ssh-keygen

ssh-keygen-rhel9-ansible-control-node

使用 ssh-copy-id 命令与托管节点共享 ssh 密钥

$ ssh-copy-id linuxtechi@192.168.1.167

Exchange-ssh-keys-ansible-managed-node

在托管节点上,创建以下文件

$ echo "linuxtechi ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/linuxtechi

返回到 Ansible 控制节点,然后创建 Ansible.cfg 文件,其中包含以下内容:

$ mkdir ~/automation && cd ~/automation/
$ vi ansible.cfg
[defaults]
inventory = ./inventory
host_key_checking = false
remote_user = linuxtechi
ask_pass = False

[privilege_escalation]
become=true
become_method=sudo
become_user=root
become_ask_pass=False

保存并退出文件,然后创建 ~/automation/inventory 文件,其中包含以下内容:

$ vi ~/automation/inventory
[dev]
192.168.1.167

保存文件并退出,执行 ansible ping命令,测试控制节点与托管节点之间的连通性

$ cd ~/automation/
$ ansible all -m ping

Ansible-Ping-Pong-Test-RHEL9

Above output confirms, ping connectivity is fine between control and managed node. Let’s create a demo ansible playbook to install nginx on managed node.

上面的输出表明,控制节点和托管节点之间的 PING 连接良好。让我们创建一个 ansible playbook 演示 ,用以在托管节点上安装 NGINX。

$ vi nginx-deploy.yaml
---
- name: Playbook to Install and Start Nginx
  hosts: dev
  tasks:
  - name: Install nginx
    package:
      name: nginx
      state: present

  - name: Start nginx Service
    service:
      name: nginx
      state: started

保存并退出,使用以下命令运行上面创建的 ansible palybook

$ ansible-playbook nginx-deploy.yaml

Ansible-Playbook-Demo-RHEL9

上面的输出表明 playbook 已经成功执行,现在使用以下 ansible ad-hoc 命令来做验证

$ ansible dev -i inventory -m shell -a 'apt list --installed|grep nginx'
$ ansible dev -i inventory -m shell -a 'systemctl status nginx'

Ansible-adhoc-command-verify-nginx

小编开源项目


鸠摩智首席音效师
472 声望9 粉丝

身强体健,龙精虎猛的活着。


引用和评论

0 条评论