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时有些地方需要注意:
- 安装Ubuntu系统后,是默认没有设置root用户的密码的
- Ubuntu系统默认是不能使用root用户直连的
所以在使用sudo ssh连接到root时,如果报权限的问题,需要确认:1)是否正确设置了root用户的密码;2)是否配置允许使用root用户登录