胡松的技术博客
站内搜索
切换语言中文
打开菜单

Ansible 快速入门:主机清单、认证方式与剧本模式

用一台主控机与两台 CentOS 7.8 受控机跑通 Ansible 的入门流程:EPEL 源与安装、主机清单的三种写法(逐台、变量、区间)、公钥与密码两种认证方式、首次登录的指纹确认,以及剧本的编写与执行。

目录11 节

快速入门

准备环境

服务器硬件配置

名称 操作系统 CPU 内存 内网IP 公网IP 集群角色
ECS CentOS 7.8 64位 2核 2GB 192.0.2.18 203.0.113.222 Master
ECS CentOS 7.8 64位 2核 2GB 192.0.2.11 203.0.113.28 Node
ECS CentOS 7.8 64位 2核 2GB 192.0.2.20 203.0.113.221 Node

主控机端

配置EPEL源:

yum install -y epel-release

安装Ansible:

yum install -y ansible

验证:

ansible --version

主机清单

这里的主机清单是将受控主机SSH信息配置到主控机的Ansible配置文件中,以供主控机的Ansible调用。

查看Ansible的主机配置信息:

cat /etc/ansible/hosts

编辑Ansible的主机配置文件追加受控主机清单:

cat >> /etc/ansible/hosts << EOF
[k8s-cluster]
192.0.2.11
192.0.2.20
EOF

上面我们将两个从节点服务器IP信息组成一组名叫“k8s-cluster”的服务器清单组追加到Ansible主机配置文件中。

接着尝试跑一下:

ansible k8s-cluster -m shell -a "free -m"

这句命令就是通过Ansible告诉“k8s-cluster”这组受控主机执行Shell命令查询各主机的内存信息,并反馈展示主控机中。

认证方式

认证方式指的是主控机要通过受控机的安全认证后才能操作受控机执行行为。常用的认证方式包含:公钥方式、密码方式。

公钥方式

将主控机的公钥文件分发到各受控机,然后主控机就可以免密登录各受控机执行操作行为了。

密码方式

在主控机的Ansible的配置主机文件里,配置受控主机清单时配置(端口、用户、密码)就行了。

参数 释义 备注
ansible_port 指定端口,默认:22 –
ansible_user 指定用户,默认:root –
ansible_password 指定密码 –

配置主机清单时追加密码等参数:

cat >> /etc/ansible/hosts << EOF
[k8s-cluster]
192.0.2.11 ansible_port=22 ansible_user='root' ansible_password='YourPassword123'
192.0.2.20 ansible_port=22 ansible_user='root' ansible_password='YourPassword123'
EOF

配置变量:

cat >> /etc/ansible/hosts << EOF
[k8s-cluster:vars]
ansible_port=22
ansible_user='root'
ansible_password='YourPassword123'

[k8s-cluster]
192.0.2.11
192.0.2.20
EOF

配置变量循环:

cat >> /etc/ansible/hosts << EOF
[k8s-cluster:vars]
ansible_port=22
ansible_user='root'
ansible_password='YourPassword123'

[k8s-cluster]
192.0.2.[11:20]
EOF

认证指纹

主控机登录受控机时需要确定指纹来规避安全问题,这个指纹确认只是在首次登录时需要,第一次确认完成后往后就不需要再确认了。解决方案有大概三种:

  1. 配置免密登录,分发主控机的秘钥到受控机时会确认指纹信息。
  2. 通过配置主机清单密码方式认证。
  3. 配置Ansible的配置文件来忽略确认指纹。

忽略确认指纹

配置Ansible配置文件忽略:

sed -i 's/host_key_checking = True/host_key_checking = False/g' /etc/ansible/ansible.cfg

Ansible 没有守护进程(agentless),配置在每次执行时读取,改完 ansible.cfg 不需要重启服务。

剧本模式

新建剧本文件:my-action.yml

- hosts: all
  tasks:
    - name: touch file
      shell: touch /tmp/mylinux.txt

执行剧本:

ansible-playbook -i hosts my-action.yml -C

案例:更新系统

- hosts: all
  tasks:
    - name: update system
      shell: yum update

同一主题下的延伸阅读。

Containerd 安装:二进制方式

用 cri-containerd-cni 二进制包装 containerd 与 runC:解压后的文件各自去哪、systemd 单元怎么放、默认 config.toml 与镜像加速怎么改。

4 分钟阅读运维

Containerd 安装:YUM 方式

用 Docker 官方 YUM 源在 openEuler 上装 containerd 并配置开机自启,含装完之后的版本验证。

1 分钟阅读运维

评论