目录
一、ansible 概述
二、Ansible 的核心组件包括:
三、Ansible 的优点包括:
四、Ansible 的工作原理:
五、ansible 企业运用架构图:
六、ansible 安装:
以下是在 Linux 上安装 Ansible 的步骤:
在 Mac 上安装 Ansible:
在 Windows 上安装 Ansible:
七、ansible centos7 安装:
八、ansible 在运维工程日常工作中常用命令及示例:
这将会把我们定义的 Playbook 运行在名为 webservers的主机上。如果一切顺利,Apache Web 服务器将会被安装在这台主机上。
这只是一个简单的例子,但它可以帮助你快速了解如何使用 Ansible。要更深入地使用 Ansible,请参阅 Ansible 官方文档,里面有更多的信息可以帮助你入门。
Ansible 是一个自动化IT 工具,用于自动化部署、配置和管理 T 系统和应用程序。它使用基于 SSH 的远程管理协议和模块化的架构,能够在多个主机上同时运行任务,并且有着简单易学的语法和强大的扩展性。
Ansible 最初是由 Michael DeHaan 创建的,现在由 Red Hat 公司进行维护和开发。它被广泛应用于 DevOps、云计算、大数据和安全等领域,有助于提高 系统的可靠性、可重复性和自动化程度。
同时,它还支持各种操作系统,包括Linux、Unix 和 Windows。
-Inventory: 用于存储主机列表、组和变量等信息
-Playbooks: 用于定义一个或多个任务,以及在哪些主机上和以何种顺序运行它们
-Modules:实现任务的单元,它们可以完成诸如文件传输、软件包安装、配置文件管理、用户管理等任务
-Roles:包含多个 Playbooks 和任务,以实现复杂的系统配置
- Ad-Hoc 命令:支持用户在命令行直接运行任务并获取结果
1、简单易学的 YAML 语法
2、基于 SSH 的远程管理协议
3、支持各种操作系统和云平台
4、模块化和可扩展
5、支持多种身份验证方法
总之,Ansible 是一个强大而简单的 T 自动化工具,可以大大提高 T 系统的自动化程度和可靠性
Ansible 的工作原理可以简要概括为以下四个步骤:
1.构建 nventory 清单:用户构建一个明确列表,其中包含 Ansible 可以管理的主机和其它设备的详细信息。清单可以被组织成不同的组,从而使相似的主机可以一起管理。
2.编写 Playbook: Plavbook 是 Ansible 剧本文件,其中包含要在目标主机上运行的任务列表。Playbook 是用基于文本的 YAML 语言编写的,可以执行各种任务,如软件安装、文件传输、用户设置等。Playbook 还可以通过变量和条件来实现任务组合和控制流程。
3.运行 Ansible: 当用户启动 Ansible 时,它会在远程主机上自动运行特定的 Playbook,根据 Plavbook 中的指令在目标机器上执行任务。Ansible 使用 SSH 协议将命令发送到目标机器上执行。
4.任务报告和状态监测与更新: Ansible 会将任务执行的日志和状态报告回传给用户,用以确认任务是否成功或者存在异常情况。根据任务执行结果,Ansible 负责更新任务清单和状态,以便下次任务运行时的参考和处理。
总的来说,Ansible 是使用基于文本的 YAML 文件编写的,它可以自动化执行各种指令,比如软件安装和配置文件部署。Ansible 工具代表了将主机自动化配置的未来方向。通过 Ansible 可以将管理多台主机的复杂任务变得更加简单和高效。
以下是一个企业级应用架构图,展示了 Ansible 在企业应用场景中的运用:
上述架构图涵盖了企业级 Ansible 环境中的各个组件。Ansible control Machine 是一个运行 Ansible 的主机,通常是一个本地计算机或云服务器。用户可以在该主机上编写和运行 Ansible Plavbooks,管理其它主机。
Ansible Tower 是一个面向企业的Web 界面,可以实现基于角色的访问控制、自动化任务调度等企业级功能,并与 Ansible Control Machine和 Satellite 集成使用。
Configuration Management Server 是一个独立于控制机器的服务器,用于存储 Ansible Plavbooks 和配置信息。此服务器还维护与主机相关的变量和状态信息。
Ansible Satelite 是 Red Hat 提供的一项高级 Entopsise 功能,它添加了多租户和安全包D 等功能,将 Ansible 配置管理扩展至整个企业环境。它允许集中管理私有和公共云基础设施以及虚拟环境,提供了更加安全和可靠的配置管理功能。
而nisble clients 即为 Anisble 要管理的主机,可以是物理主机、虚拟机或者云上的主机。
此外,企业级 Ansible 还支持与云供应商集成,例如与 AWS、Azure 和 Google cloud 等云提供商集成使用,以提供更完整的计算资源管理
可以在 Linux、Mac 和 Windows 上安装 Ansible。
1.更新包管理器:
在 Ubuntu 或 Debian 上:sudo apt update
在 Centos或 RHEL 上:sudo yum update
2. 安装依赖项:
sudo apt install software-properties-common
3.添加 Ansible 的 PPA:
sudo apt-add-repository ppaansible/ansible
4.更新包管理器:
sudo apt update
5.安装 Ansible:
sudo apt install ansible558
安装完成后,可以通过以下命令验证 Ansible 是否已成功安装:
ansible --version
如果安装成功,会显示 Ansible 的版本信息。
1.安装 Homebrew,Homebrew 是 Mac 上的一个包管理器,可以简化软件安装和管理
/bin/bash -c "S(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)'
2.通过 Homebrew 安装 Ansible:
brew install ansible
安装完成后,可以通过以下命令验证 Ansible 是否已成功安装:
ansible --version
1.安装 WSL (Windows Subsystem for Linux): 可以在 Windows 商店中下载 WSL。
2.安装 Ubuntu 子系统: 可以从 WSL 提供的应用程序商店中下载 Ubuntu。
3.更新 Ubuntu:
sudo apt update
sudo apt upgrade
4.安装 Ansible:
sudo apt install ansible
5.安装后,可以通过以下命令验证 Ansible 是否已成功安装:
ansible --version
以上就是在不同操作系统上安装 Ansible 的一些步骤。在安装完成后,你就可以开始使用 Ansible 进行自动化配置和管理了。
在 Centos 7 上安装 Ansible 的步骤如下:
1.更新包管理器:
sudo yum update
2.安装 EPEL 存储库:
sudo yum install epel-releaset
3.安装 Ansible:
sudo yum install ansible
4.安装完成后,可以通过以下命令验证 Ansible 是否已成功安装:
ansible --version
如果安装成功,会显示 Ansible 的版本信息。
需要注意的是,如果你使用的是新版本的 CentOS 7(如 7. 6
或 7.7),你需要使用 EPEL 存储库的最新版本,可以使用以下命令将其更新:
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
完成更新后,再使用第三步安装 Ansible 即可。另外,如果你想在 centos 7上进行 Ansible 开发,你还需要安装 Python pip 和其他依赖项。你可以使用以下命令进行安装:
sudo yum install python-pip python-devel libffi-devel openssl-devel gccsudo pip install cryptography
然后你就可以在 Centos 7 上使用 Ansible 进行自动化配置和管理了。
在日常运维工作中,我们经常使用 Ansible 来管理远程主机。以下是一些常用的 Ansible 命令及示例:
1.Ping 测试远程主机是否可达
使用 ping 模块检查目标主机是否在线,可以检查 SSH 连接是否可用:
ansible all -i host file -m ping
其中,“all表示运行操作所有主机,
'-ihost file表示使用 host file 文件指定主机清单。
2.运行 shell 命令
使用 shell 模块来管理 Linux 上的文件和目录,例如创建目录:
ansible all -i host file -m shell -a 'mkdir /path/to/directoryt'
3.安装软件包
使用 yum 模块安装软件包:
ansible all -i host file -m apt -a "name=
state=installed"
4.复制文件
使用 copy 模块将文件复制到远程主机上:
ansible all -i host_file -mcopy -a "src=
dest= 'ts3
5.重启远程主机
使用 reboot 模块重启远程主机:
ansible all -i host file -m reboot
6.使用 Playbook
在 Ansible 中,Playbook 是一组任务列表,可以实现复杂的部署和配置管理。
以下是一个简单的 Playbook 示例,该Playbook 将在所有目标主机上安装 Apache httpd 服务:
- name: Install Apache httpd
hosts: all
become: true
tasks:
- name: Install Apache httpd
yum: name=httpd state=installed
- name: Start Apache httpd
service: name=httpd state=started
7.使用变量
Ansible 使用变量用于在 Playbook 或任务中存储和传递数据。在 Playbook 中,可以通过以下方式定义变量:
-hosts: all
vars:
package_name: apache2
tasks:
- name: Install package
apt: name=ff package name i state=installed
在以上示例中,package_name 是定义的变量,可以通过‘{{package_name }}’的方式在任务中引用。
这些是一些常用的 Ansible 命令和示例,在日常运维工作中使用 Ansible 可以使得管理远程主机更加高效和自动化。
playbook 实例
以下是一个简单的 Ansible Playbook 示例,该 Playbook 用于创建一个名为‘example’的用户,并将其添加到 sudoers文件中:
- name: Create new user and add to sudoers
hosts: all
become: true
vars:
username: example
password:
'S6SlyKtH5jS/GgOhluJfV7RdLn8EZuhQj0uwN37UiJdLwSmBvhoj3z3gAm89aBR31G2dbk3RJPSzbrvKzEg9sOSMS5D5mrBl1'
tasks:
- name: Create user
user:
name: "{{}username }}"
password: "{{password }}"
shell: /bin/bash
createhome: yes
- name: Add to sudoers
lineinfile:
dest: /etc/sudoers
line:"{{ username}}ALL=(ALL)NOPASSWD:ALL"
validate: "visudo -cf %s"
state: present
在以上示例中,Playbook 的第一部分是名称、主机和权限等属性的定义。然后定义了一些变量,包括要创建的用户名‘example’、密码和 shell。最后,在任务中,先使用‘user’ 模块创建新用户,然后使用‘ineinfile’模块将该用户添加到 sudoers 文件中。
您可以将此 Playbook 保存为‘example.yml’,然后使用以下命令来运行它
ansible-playbook example.yml -i hosts
其中,‘-i hosts’表示使用指定的主机清单文件hosts 来运行 Playbook。