how-to-install-ansible-on-rocky-linux

Ansible 是由 RedHat 赞助的开源免费自动化工具。使用 Ansible,我们可以管理和配置 Linux 和 Windows 系统,而无需安装任何代理。它基本上可以在 SSH 协议上使用,并且可以一次配置数百台服务器。在 Ansible 术语中,安装 Ansible 的系统称为控制主机/节点,而由 Ansible 管理的系统称为托管主机。

在这篇文章中,我们将讨论如何在 Rocky Linux 8 上安装最新版本的 Ansible。

实验准备

  • Control Node – 192.168.1.170 – Minimal Rocky Linux 8
  • Managed Host 1 – 192.168.1.121 – Ubuntu 20.04 LTS
  • Managed Host 2 – 192.168.1.122 – Rocky Linux 8
  • sysops user with admin rights

安装 Ansible

1) 更新系统

要更新 rocky linux 8,请运行 dnf 命令

$ sudo dnf update -y

重启系统

$ sudo reboot

2) 配置 EPEL 存储库

Ansible 包及其依赖项在默认的 Rocky Linux 8 包存储库中不可用。因此,要通过 dnf 安装 ansible,我们必须先配置 EPEL 存储库。

$ sudo dnf install -y epel-release

3) 安装 Ansible

$ sudo dnf install ansible -y

Install-Ansible-with-dnf-command-rocky-linux

查看 Ansible 版本

$ ansible --version

Ansible-Version-Check-Rocky-Linux8

pip 方式安装 Ansible

如果您正在寻找 Ansible 的最新版本,那么请使用 pip 安装 Ansible。

1) 安装所有更新

$ sudo dnf update -y

重启系统

$ reboot

2) 安装 python 3.8 和其他依赖项

$ sudo  dnf module -y install python38
$ sudo alternatives --config python

键入 3 并按 enter 键

Alternative-Python-Rocky-Linux8

3) 安装 Ansible

$ sudo pip3 install setuptools-rust wheel
$ sudo pip3 install --upgrade pip
$ sudo python -m pip install ansible

Install-Ansible-with-pip-command

Ansible 安装成功

Successful-Ansible-Installation-Rocky-Linux8

查看 Ansible 版本

$ ansible --version

Verify-Ansible-Version-Rocky-Linux

验证 Ansible

Whenever Ansible is installed with dnf or yum command then it’s default configuration file ‘ansible.cfg’ is created automatically under ‘/etc/ansible’ folder. But when we install it with pip then we have to create its configuration file manually.

每当使用 dnf 或 yum 命令安装 Ansible 时,就会自动创建 /etc/ansible/ansible.cfg 文件,当我们使用 pip 安装时,我们必须手动创建其配置文件。

It is recommended to create ansible.cfg for each project. For the
demonstration purpose, I am creating an automation project. Run
following mkdir command,

建议为每个项目创建独立的 ansible.cfg,本文中我创建了一个自动化项目。

$ mkdir automation
$ cd automation

创建 ansible.cfg 文件,包含以下内容

$ vi ansible.cfg
[defaults]
inventory = /home/sysops/auotmation/inventory
remote_user = sysops
host_key_checking = False

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

保存并退出文件

在 automation 目录下创建一个 inventory 文件,包含以下内容

$ vi inventory
[prod]
192.168.1.121

[test]
192.168.1.122

保存并关闭文件

在 ansible.cfg 文件中,我已经使用 sysops 作为 remote_user,因此让我们为 sysops 用户创建 ssh 密钥,并在托管主机之间共享它。

$ ssh-keygen

ssh-keygen-rocky-linux8

使用 ssh-copy-id 命令共享 SSH 密钥

$ ssh-copy-id sysops@192.168.1.121
$ ssh-copy-id sysops@192.168.1.122

ssh-copy-id-command-rocky-linux

在所有的托管主机上执行以下命令

# echo "sysops ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/sysops

使用 ping 模块验证控制节点到托管主机的连通性

$ cd automation/
$ ansible -i inventory all -m ping

Ping-pong-ansible-managed-hosts

让我们创建一个剧本 (web.yaml) 在托管主机上安装 nginx 和 php

$ vi web.yaml
---
- name: Play to Packages
  hosts:
    - test
    - prod
  tasks:
  - name: Install php and nginx
    package:
      name:
        - php
        - nginx
      state: present

保存并关闭文件

使用下面的 ansible-playbook 命令运行剧本

$ ansible-playbook -i inventory web.yaml

Run-Ansible-Playbook-Rocky-Linux8

很好,以上输出确认 playbook 已经成功执行,它也确认 Ansible 安装正确。

我的开源项目

酷瓜云课堂-在线教育解决方案


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

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


引用和评论

0 条评论