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 仓库)