乐趣区

关于ubuntu:如何在-Ubuntu-2204-2004-上安装-Ansible

Ansible 是一个收费的开源 IT 自动化和配置工具。它简直实用于所有 Linux 发行版,可用于治理 Linux 和 Windows 零碎。当初,Ansible 也被用于治理 AWS、虚拟机和容器等中的 EC2 实例。它不须要托管主机上的任何代理,只须要 ssh 连贯。

在这篇文章中,咱们将介绍如何在 Ubuntu 22.04 LTS (Jammy Jellyfish) 和 20.04 LTS (Focal Fossa) 上装置最新版本的 Ansible。

必备条件

  • Minimal Installed Ubuntu 22.04 | 20.04
  • Regular user with sudo privileges
  • 2 CPU / vCPU
  • 2 GB RAM or more
  • 20 GB Hard drive
  • Internet Connection

以下是我的演示设置细节

  • Ansible Control Node – control.example.com (192.168.1.192)
  • Ansible Managed Nodes – node1.example.com & node2.example.com
  • sysops sudo user on control and managed nodes with privileges.

留神: 这里 node1 是一个 Ubuntu 零碎,node2 是一个 fedora 零碎,管制节点是咱们将装置 ansible 的零碎。我假如曾经在每个主机上创立了 sysops sudo 用户。

要配置 sudo 用户 (sysops) 运行所有命令而不提醒输出明码,请在每个托管主机上运行以下 echo 和 tee 命令

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

(1) 在管制节点上利用更新

登录到 Ubuntu 20.04 LTS / 21.04 零碎,并在 APT 命令下运行以利用更新。

$ sudo apt update
$ sudo apt upgrade -y

装置完所有更新后,重新启动零碎一次

$ sudo reboot

(2) 启用 Ansible PPA 存储库

nsible 软件包及其依赖项可在 Ubuntu 22.04/20.04 的默认软件包存储库中找到,但这不是最新的 Ansible 版本。因而,要装置最新且稳固的 Ansible,请启用其 PPA 存储库,运行以下命令

$ sudo apt install -y software-properties-common
$ sudo add-apt-repository --yes --update ppa:ansible/ansible

当初,通过运行上面的 apt 命令更新存储库

$ sudo apt update

(3) 装置最新版本的 Ansible

在 Ubuntu 20.04 LTS / 22.04 LTS 上装置最新版本的 Ansible,运行 apt 命令

$ sudo apt install -y ansible

装置胜利后,执行命令验证 Ansible 的版本

$ ansible --version

(4) 设置 SSH 密钥并在被治理节点之间共享

配置 sysops 用户的 ssh 无明码认证。在管制节点为 sysops 用户生成 SSH 密钥,并在被治理主机之间共享。执行 ssh-keygen 命令

$ ssh-keygen

当提醒输出时按回车键,输入如下所示

留神: 如果您没有配置本地 DNS 服务器,则须要批改管制结点上的 /etc/hosts 文件,增加以下内容:

192.168.1.200 node1.example.com
192.168.1.77  node2.example.com

执行 ssh-copy-id 命令,在受控主机之间共享 ssh 密钥,示例如下

$ ssh-copy-id node1.example.com
$ ssh-copy-id node2.example.com

以上命令的输入如下所示

(5) 创立 ansible cfg 和 inventory 文件

通常倡议每个我的项目都有独自的 ansible.cfg 和 inventory 文件。出于演示的目标,我应用 demo 作为项目名称。因而,首先通过运行 mkdir 命令创立我的项目文件夹。

$ mkdir demo

Download sample ansble.cfg file to ~/demo folder using following wget command

应用以下 wget 命令下载示例 ansble.cfg 文件到 ~/demo 文件夹

$ cd demo
$ wget https://raw.githubusercontent.com/ansible/ansible/stable-2.9/examples/ansible.cfg

编辑 ~/demo/ansible.cfg 文件, 设置如下参数

$ vi ~/demo/ansible.cfg

在 default 局部上面

inventory      = /home/sysops/demo/inventory
remote_user = sysops
host_key_checking = False

在 privilege_escalation 局部上面

become=True
become_method=sudo
become_user=root
become_ask_pass=False

保留并敞开文件

当初,让咱们创立 ~/demo/ansible.cfg 文件中定义的 inventory 文件。

$ vi ~/demo/inventory
[dev]
node2.example.com

[prod]
node1.example.com

保留并敞开文件

从新执行 ansible –version 命令,确认是否设置了新的配置文件

$ cd demo/
$ ansible --version

很好,ansible 当初正在读取咱们我的项目的 ansible 配置文件。让咱们应用 ansible ad-hoc 命令来验证被控节点的连通性

$ ansible all -m ping

留神: 确保从 demo 文件夹中运行 ansible 命令。

此输入确认从管制节点到被控主机的连贯曾经到位。

(6) 创立一个 Demo Ansible 剧本

为了验证 ansible 装置和配置,让咱们在 demo 目录下创立一个名为 packages.yaml 的示例剧本,本剧本将在被控节点上安装包。

$ vi packages.yaml
---
- name: Playbook to Install Packages
  hosts:
    - dev
    - prod
  tasks:
  - name: Install php and mariadb
    package:
      name:
        - php
        - mariadb-server
      state: present

保留并敞开文件

当初应用 ansible-playbook 命令运行剧本

$ ansible-playbook packages.yaml

以上输入确认剧本已胜利执行。为了验证后果,能够执行以下 ad-hoc 命令

$ ansible dev -m shell -a 'dpkg -l | grep -E"php|mariadb"'$ ansible prod -m shell -a'rpm -qa | grep -E "php|mariadb"'

以上就是这篇文章的全部内容,如果你感觉它很有用,请毫不犹豫地分享它。请在上面的评论区公布疑难和反馈。

我的开源我的项目

  • course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 – github 仓库)
退出移动版