ubuntu22.04 安装ansible

引言

  • 1 安装
  • 2 配置
  • 3 测试
  • 4 在安装过程中遇到的问题
  • 总结

1 安装

# 1)更新
sudo apt update

# 2)启用ppa存储库
sudo apt install -y software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible

# 3)安装最新版本的ansible
sudo apt install -y ansible

ansible --version

刚安装好之后的ansible配置
在这里插入图片描述

2 配置

# 1)配置域名解析
sudo vim /etc/hosts

# 配置密钥(个人用户的免密)
ssh-keygen
ssh-copy-id server

# 配置密钥(root用户的免密)
sudo ssh-keygen
sudo ssh-copy-id server

2)创建 ansible.cfg 和 inventory 文件
# 通常建议每个项目都有单独的 ansible.cfg 和 inventory 文件
mkdir k8s && cd k8s
wget https://raw.githubusercontent.com/ansible/ansible/stable-2.9/examples/ansible.cfg

# 3)修改ansible.cfg 和 inventory 文件
vim k8s/ansible.cfg
[defaults]
inventory      = /home/ubuntu/k8s/inventory
remote_user    = ubuntu
host_key_checking = False

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
# become_user为在目标主机上具有sudo权限的用户名

vim k8s/inventory
[k8s]
server

# 保存并关闭
cd k8s/
ansible --version

修改后的ansible配置:
在这里插入图片描述

3 测试

ansible all -m ping

在这里插入图片描述

4 在安装过程中遇到的问题

在”sudo ssh-copy-id server“执行时报错:Permission denied (publickey,password)
解决:如果不是密码错误,并且服务器上的sshd服务已经开启,则需要修改服务器的配置文件/etc/ssh/sshd_config

sudo vim /etc/ssh/sshd_config
# PermitRootLogin 设置为 yes(如果你使用的是root账户)或者 without-password(如果你使用的是非root账户)
# 用于指定是否允许以root用户身份通过SSH登录到远程主机
# yes: 允许root用户通过SSH进行登录。
# no: 禁止root用户通过SSH进行登录。
# prohibit-password: 禁止使用密码登录root用户,但允许使用其他认证方式,例如SSH密钥。
PermitRootLogin without-password
# PubkeyAuthentication  允许使用公钥进行身份验证
PubkeyAuthentication yes
# 允许使用密码进行身份验证
PasswordAuthentication yes
# 保存后重启sshd服务即可
sudo service sshd restart
# 重启后再次执行:ssh-copy-id 即可

配置免密登录的输出内容:
在这里插入图片描述

总结

对于更习惯使用RedHat系列的读者来说,使用Ubuntu时有些地方需要注意:

  1. 安装Ubuntu系统后,是默认没有设置root用户的密码的
  2. Ubuntu系统默认是不能使用root用户直连的

所以在使用sudo ssh连接到root时,如果报权限的问题,需要确认:1)是否正确设置了root用户的密码;2)是否配置允许使用root用户登录