> 讲师:李振良
>
> 官方网站: http://www.ctnrs.com
>
> 第一章:《Ansible自动化部署K8S集群》
>
> 说明:
>
> 1. 强烈建议学习课堂视频,更多细节都在里面!
> 2. 本文档为内部学员资料,请不要随意转发。
# 一、Ansible自动化部署K8S集群
## 1.1 Ansible介绍
Ansible是一种IT自动化工具。它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新。Ansible适用于管理企业IT基础设施,从具有少数主机的小规模到数千个实例的企业环境。Ansible也是一种简单的自动化语言,可以完美地描述IT应用程序基础结构。
具备以下三个特点:
- 简单:减少学习成本
- 强大:协调应用程序生命周期
- 无代理:可预测,可靠和安全
使用文档: https://docs.ansible.com/
安装Ansible:yum install ansible -y
![](https://k8s-1252881505.cos.ap-beijing.myqcloud.com/k8s-2/ansible.png)
- Inventory:Ansible管理的主机信息,包括IP地址、SSH端口、账号、密码等
- Modules:任务均有模块完成,也可以自定义模块,例如经常用的脚本。
- Plugins:使用插件增加Ansible核心功能,自身提供了很多插件,也可以自定义插件。例如connection插件,用于连接目标主机。
- Playbooks:“剧本”,模块化定义一系列任务,供外部统一调用。Ansible核心功能。
## 1.2 主机清单
```
[webservers]
alpha.example.org
beta.example.org
192.168.1.100
www[001:006].example.com
[dbservers]
db01.intranet.mydomain.net
db02.intranet.mydomain.net
10.25.1.56
10.25.1.57
db-[99:101]-node.example.com
```
## 1.3 命令行使用
ad-hoc命令可以输入内容,快速执行某个操作,但不希望留存记录。
ad-hoc命令是理解Ansible和在学习playbooks之前需要掌握的基础知识。
一般来说,Ansible的真正能力在于剧本。
### 1、连接远程主机认证
SSH密码认证:
```
[webservers]
192.168.1.100:22 ansible_ssh_user=root ansible_ssh_pass=’123456’
192.168.1.101:22 ansible_ssh_user=root ansible_ssh_pass=’123456’
```
SSH密钥对认证:
```
[webservers]
10.206.240.111:22 ansible_ssh_user=root ansible_ssh_key=/root/.ssh/id_rsa
10.206.240.112:22 ansible_ssh_user=root
也可以ansible.cfg在配置文件中指定:
[defaults]
private_key_file = /root/.ssh/id_rsa # 默认路径
```
### 2、常用选项
| 选项 | 描述 |
| ------------------------------------- | ------------------------ |
| -C, --check | 运行检查,不执行任何操作 |
| -e EXTRA_VARS,--extra-vars=EXTRA_VARS | 设置附加变量 key=value |
| -u REMOTE_USER, --user=REMOTE_USER | SSH连接用户,默认None |
| -k, --ask-pass | SSH连接用户密码 |
| -b, --become | 提权,默认root |
| -K, --ask-become-pass | 提权密码 |
### 3、命令行使用
```ansible all -m ping
ansible all -m ping
ansible all -m shell -a "ls /root" -u root -k
ansible webservers -m copy –a "src=/etc/hosts dest=/tmp/hosts"
```
## 1.4 常用模块
ansible-doc –l 查看所有模块
ansible-doc –s copy 查看模块文档
模块文档:https://docs.ansible.com/ansible/latest/modules/modules_by_category.html
### 1、shell
在目标主机执行shell命令。
```
- name: 将命令结果输出到指定文件
shell: somescript.sh >> somelog.txt
- name: 切换目录执行命令
shell:
cmd: ls -l | grep log
chdir: somedir/
- name: 编写脚本
shell: |
if [ 0 -eq 0 ]; then
echo yes > /tmp/result
第一章 Ansible自动化部署K8S集群-最新
最新推荐文章于 2024-07-22 16:12:29 发布