ansible all -m copy -a ‘content=“hello westos”\n dest=/etc/motd’ -u student --become@[TOC](目录)

1. ansible的介绍

ansible是一款开源自动化平台,是一个配置管理工具,自动化运维工具 。它具有基于Python开发,集合了众多运维工具 (puppet、chef、func、fabric) 的优点,实现了 批量系统配置、批量程序部署、批量运行命令等功能。

2. ansible的优点

1.跨平台支持
2.人类可读自动化: ansible提供linux,Windows,unix和网络设备的无代理支持,适用于物理、虚拟、云和容器环境
3.完美描述应用:playbook
4.轻松管理版本控制:playbook是纯文本,可视作源代码
5.支持动态清单
6.编排可与其他系统轻松集成:puppet、jenkins
7.基础架构即代码
8.减少人为错误

3. ansible的安装

1.在workstation上安装ansible,充当控制节点

yum install -y ansible

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_linux


基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_配置文件_02


基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_linux_03


2.查看ansible版本信息

ansible --version

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_linux_04


3.使用setup模块验证python

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_python_05

4. 构建 ansible 清单

清单:
定义了 ansible 将要管理的一批主机。清单就是我们的主机清单,里面保存的是一些 ansible 需要连接管理的主机列表

4.1 静态清单

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_linux_06


注意: 一台主机可以存在于多个主机组

4.2 定义嵌套组

ansible 主机清单可以包含多个主机组构成的组

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_python_07

4.3 通过范围简化主机规格

可以指定主机名称或 ip 范围或者数字和字母范围

  • 语法:
4.4 验证清单

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_运维_08

4.5 默认清单位置:

/etc/ansible/hosts

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_文件复制_09


基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_python_10

4.6 动态清单

可以从开源社区的脚本中获取

5. 管理 ansible 配置文件

5.1 ansible程序结构

配置文件目录

/etc/ansible/

执行文件目录

/usr/bin/

Lib库依赖目录

/usr/lib/pythonX.X/site-packages/ansible/

Help文档目录

/usr/share/doc/ansible-X.X.X/

Man文档目录

/usr/share/man/man1/

5.2 配置文件:

/etc/ansible/ansible.cfg

基本配置文件,如果找不到其他配置文件时可使用

~/.ansible.cfg

如果存在此配置并且当前工作目录中也没有 ansible.cfg,此 文件替代/etc/ansible/ansible.cfg

./ansible.cfg

执行 ansible 命令的目录中如果有 ansible.cfg,就用它,不 使用上面两个(推荐使用,上面两个不常用)

5.3 显示使用的配置文件

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_python_11

5.4 管理配置文件中的设置:

[defaults]

部分设置 ansible 操作的默认值

[privilege_escalation]

配置 ansible 如何在受管主机上执行特权升级

vim /root/deploy-inventory/ansible.cfg

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_linux_12

5.4 使用 sudo 进行权限下放

使用超级用户编辑文件:

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_python_13

6.运行临时命令

使用临时命令可以快速测试和更改,无需编写 playbook

6.1 格式:

ansible host-pattern -m module [-a ‘module arguments’] [-i inventory]

6. 2 检查能否在受管主机上运行python 模块

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_配置文件_14


基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_文件复制_15

6.3 使用临时命令通过模块执行任务

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_配置文件_16


基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_文件复制_17

6.4.ansible 模块
  • 1.文件模块:

-copy

将本地文件复制到受管主机

-file

设置文件的权限和其他属性

-lineinfile

确保特定行是否在文件中

-synchronize

使用 rsync 同步内容

  • 2.系统模块

-firewalld

使用 firewalld 管理任意端口和服务

-reboot

重启

-service

管理服务

-user

添加、删除和管理用户账户

  • 3.Net Tools 模块

-get_url

通过 http、https、或者 ftp 下载文件

-nmcli

管理网络

-uri

与 web 服务交互

7. 实验

1.使用 user 模块确保 student 用户存在于servera.lab.example.com 且 uid 为 1000

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_运维_18


基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_运维_19

  • 注意:
    command 模块允许执行远程命令,但这些命令不是 shell 处理,所以无法访问 shell 环 境变量,所以不能执行重定向、传送等操作’

2.使用 shell 和 command 的区别

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_文件复制_20

3. 使用 command 模块执行临时命令

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_配置文件_21


4.使用 copy 模块

  • 1.首先使用 student 用户,因为 student 用户没有写权限,会失败

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_linux_22

  • 2.使用特权升级
    注意:
    此处使用特权升级需要先编辑 /etc/sudoers.d/student 文件

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_文件复制_23

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_运维_24

基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_python_25


基于ansible的自动化二进制模式部署高可用Kubernetes集群 ansible自动化运维工具_文件复制_26

  • 参数解释:

-m

指定模块

-a

指定块命令,content=" "指定添加信息\n换行,dest=/etc/motd添加信息路径

-u

指定受管主机登录时的用户身份

-k

表示输入密码(已经做过免密登录的可以不适用此参数)

–become

超级用户身份登录