在 ubuntu 上安装 ansible 的步骤 22.04 lts
这里给出的在 ubuntu 22.04 上安装 ansible 的步骤和也适用于 ubuntu 20.04 lts linux。
1. 更新控制节点服务器
在这里,我们使用 ubuntu 22.04 配置为 ansible node 服务器或桌面,因此请转到其命令终端并首先运行您计划设置 ansible 的 system update 命令。在短期内,在您的 ubuntu 22.04 服务器中运行给定的命令。
sudo apt update
3. 在 ubuntu 上安装 ansible 22.04
ansible 软件包已经存在,可以使用 ubuntu 22.04 的默认系统存储库进行安装。因此,只需使用 apt 包管理器运行给定的命令即可。
但是,通过默认存储库的版本不是最新版本,因此这里我们使用 ansible 的 ppa 存储库作为它的最新版本。
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
通过键入 – y 并点击接受安装包的请求
4. 在 ubuntu 22.04 上检查 ansible 版本
让我们使用以下方法检查系统上 ansible 的安装程序版本
ansible --version
5. 配置主机服务器
要使用 ansible 管理的服务器必须安装 ssh,并在防火墙中打开端口 22,才能从其他系统(例如随 ansible 一起安装的系统)访问它们。
例如,您有在 ubuntu、debian 和 centos 上运行的服务器,您希望使用 ansible 管理和配置这些服务器。因此,我们需要安装 ssh 服务器并在其上打开端口 22,您可以使用这些命令。
对于ubuntu和debian服务器-
sudo apt install openssh-server
sudo systemctl enable ssh
要允许防火墙中的端口 22-
sudo ufw allow 22
对于 rhel 或 centos
sudo dnf install openssh-server
sudo systemctl enable sshd
允许 22 在防火墙-
sudo firewall-cmd --zone=public --permanent --add-port=22/tcp
因此,为了执行本教程,我们有三个服务器 ubuntu、debian 和 centos,这里是我们的例子中的 ip 地址。
- ubuntu的– 192.168.189.172
- centos – 192.168.0.102
- debian – 192.168.0.104
6. 在 ubuntu 上生成 ssh 密钥 22.04
要在远程目标服务器上安装软件包或执行某些部署,请在 localhost(控制节点)上创建一对 ssh 密钥,然后将它们推送到每个远程服务器上,以便我们可以使用 ssh 管理它们。
只需多次键入并按 enter 键,直到密钥生成完成。
ssh-keygen
7. 将 ssh 密钥复制到远程服务器或主机服务器
现在,将 ubuntu 22.04 linux 上生成的密钥推送到要配置或管理的远程服务器。您应该知道远程服务器的用户名或使用默认的 root 用户。
注意:将 h2s 替换为远程服务器的 sudo 用户或使用默认的 root。此外,将 ip 地址替换为服务器的 ip 地址。
例:
ssh-copy-id h2s@192.168.189.172
ssh-copy-id h2s@192.168.0.102
ssh-copy-id h2s@192.168.0.104
现在,在每台服务器上运行以下命令,以便我们可以使用 ansible 在它们上运行带有 sudo 的命令,而无需输入密码。
echo "$(whoami) all=(all) nopasswd:all" | sudo tee /etc/sudoers.d/$(whoami)
如果我们不运行上述命令,那么在运行 ansible 管理远程服务器时,我们将收到以下错误:
192.168.xx.xx | failed | rc=-1 >>
missing sudo password
8. 为远程主机创建清单文件
在 ansible 中,我们创建一个文件,用于定义要管理的所有远程主机或目标系统。我们也可以创建一组主机,例如,一组是web服务器,只包含运行apache等一些web服务器的远程系统,另一组可以是运行数据库服务器的mysql组,依此类推。清单文件也很重要,因为使用它,playbook 中的命令、模块和任务将起作用。
因此,在本教程中,我们有三个远程服务器,让我们将它们添加到 ansible 主机文件中。
sudo apt install nano -y
sudo nano /etc/ansible/hosts
如果您不想创建任何组,则只需将远程服务器 ip 地址或域名粘贴到文件中,而要创建组,您必须在添加 ip 地址之前指定它。您可以编辑已有示例的默认 ansible 清单文件值,也可以在文件末尾添加自己的值。
在这里,我为 web 服务器标识的主机组添加两台服务器,其中一台服务器将定义为单个服务器。
在以下屏幕截图中,你将看到-
192.168.189.172
它是一个取消分组的服务器
而
[webservers]
192.168.0.102
192.168.0.104
位于名为 web servers 的组中。创建组的好处是,我们可以向该特定主机组中定义的一整组服务器发出一个命令。例如,我可以同时在名为 web 服务器的组中添加的所有远程服务器上安装 apache 服务器。同样,您可以定义数据库组和其他数据库组。
注意 – 带有自定义 ssh por t 的库存
如果您使用某些服务器不是默认的 22 ssh 端口,例如,在 docker 上运行的服务器,那么我们也可以使用 ip 地址来定义它。例-
192.168.0.104 ansible_user=remote-server-username ansible_port=49153
⇒ 在上述命令中,替换 ip 地址、remote-server-username 和端口号,并将其添加到清单文件中。
要保存文件,只需按 ctrl x、type-y,然后按 enter 键。
9. ping 所有添加的远程服务器
由于我们已经成功创建了清单文件,让我们检查一下我们的 ansible 是否可以 ping 所有添加的服务器,为此 –
要 ping 一组主机
ansible -m ping group-name
例子– -m ping web-servers
对单个服务器执行 ping 操作
ansible -m ping ip-address
例子–ansible -m ping 192.168.189.172
全部 ping 通。
ansible -m ping all
输出示例:
192.168.189.172 | success => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
为了检查特定用户,我们可以运行
ansible all -m ping -u your-remote-server-user
注意:将“your-remote-server-user”替换为要检查的用户。
10. 用于在远程服务器上安装软件包的 ansible 命令
现在,假设您要在清单文件中定义的一组服务器上安装 apache web 服务器。在这里,我们已经命名了一个网络服务器,因此我们使用它,您可以使用您为服务器组提供的任何名称。
命令语法
ansible -b --become-method=sudo -m shell -a 'command to execute' webservers
例如,同时在远程 debian 和 ubuntu 系统上运行更新和安装 apache 服务器。
ansible -b --become-method=sudo -m shell -a 'apt update' webservers
安装 apache
ansible -b --become-method=sudo -m shell -a 'apt install -y apache2' webservers
要对所有定义的远程 pc 运行相同的上述命令,请运行-
ansible -b --become-method=sudo -m shell -a 'apt install -y apache2 ' all
对于取消分组的主机,您可以使用其 ip 地址,例如 –
ansible -b --become-method=sudo -m shell -a 'apt install -y apache2' 192.168.0.104
您还可以使用其他不需要的命令,例如检查正常运行时间-sudo
ansible -m command -a "uptime" group-name/ip-adress
上述相同的命令可用于其他目的,只需将 uptime 替换为您要在远程服务器上执行的命令,并更改组名称/ip 地址即可。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/yun289988.html