41学习自动化运维工具 Ansible 的基本用法,包括剧本编写任务执行
Posted 玩机科技社
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了41学习自动化运维工具 Ansible 的基本用法,包括剧本编写任务执行相关的知识,希望对你有一定的参考价值。
Ansible是一种自动化运维工具,可以通过SSH和基于Python的模块来管理多台服务器。在这里,我们将介绍Ansible的基本用法,包括如何编写剧本和执行任务。
安装Ansible
在开始使用Ansible之前,您需要安装Ansible。您可以通过以下命令在Linux上安装Ansible:
sqlCopy code
sudo apt-get update sudo apt-get install ansible
如果您的系统不是Linux,则可以使用以下命令安装Ansible:
Copy code
pip install ansible
编写Ansible剧本
Ansible使用一种称为YAML(Yet Another Markup Language)的语言来编写剧本。剧本是Ansible中的基本单元,它由一系列任务组成。每个任务执行特定的操作,例如安装软件包、创建用户等。
以下是一个简单的Ansible剧本示例,它使用apt模块在远程服务器上安装nginx:
---
- name: Install Nginx
hosts: webserver
become: true
tasks:
- name: Update apt cache
apt:
update_cache: yes
- name: Install Nginx
apt:
name: nginx
state: present
剧本由以下几个部分组成:
- name: 剧本名称,用于标识剧本
- hosts: 剧本要执行的目标主机
- become: 指定要使用sudo或root用户运行任务
- tasks: 剧本包含的任务列表
在此示例中,我们指定要在名为webserver的主机上安装Nginx。第一个任务使用apt模块更新apt缓存,第二个任务使用apt模块安装Nginx。
执行Ansible任务
要执行Ansible剧本,请使用以下命令:
Copy code
ansible-playbook myplaybook.yml
其中,myplaybook.yml是您要执行的剧本名称。
您还可以使用以下命令在远程主机上执行单个任务:
bashCopy code
ansible webserver -m command -a "uptime"
其中,webserver是目标主机的名称,-m指定要使用的模块,-a指定要执行的命令
Ansible模块
Ansible的任务是通过模块来实现的。模块是一段可重用的代码,可以完成特定的任务,例如安装软件包、创建用户、启动服务等。Ansible提供了丰富的模块库,您可以从中选择适合您需求的模块。
以下是一些常用的Ansible模块:
- file:用于管理文件和目录
- apt:用于在Debian和Ubuntu系统上管理软件包
- yum:用于在CentOS和Red Hat系统上管理软件包
- service:用于管理系统服务
- user:用于管理系统用户
每个模块都有一组参数,您可以使用这些参数来自定义模块的行为。例如,在前面的示例中,我们使用apt模块的name和state参数来安装Nginx。
Ansible任务
任务是用于执行操作的基本单元。任务可以调用模块以完成特定的操作。以下是一个简单的任务示例,它使用file模块创建一个目录:
- name: Create directory
file:
path: /var/www
state: directory
mode: '0755'
这个任务使用file模块创建一个名为/var/www的目录。它指定目录的路径、状态和权限模式。
执行Ansible任务
要执行Ansible任务,请使用以下命令:
ansible target_host -m module -a "arguments"
Ansible 提供了许多内置模块,这些模块可以完成各种任务,如管理包、配置文件、用户和组等。这些模块可以通过 Ansible 控制节点调用。在这里,我们介绍一些常用的模块。
4.1. 文件管理模块
Ansible 提供了多个文件管理模块,如下:
- copy 模块:复制文件到远程主机。
- fetch 模块:从远程主机上拉取文件。
- file 模块:管理文件的属性,如文件的权限、所有者等。
- lineinfile 模块:在文件中查找并替换文本。
例如,以下剧本使用 copy 模块将本地文件复制到远程主机上
---
- hosts: webservers
tasks:
- name: Copy configuration file
copy:
src: /path/to/local/file.conf
dest: /etc/config/file.conf
4.2. 包管理模块
Ansible 提供了多个包管理模块,如下:
- apt 模块:用于 Debian 和 Ubuntu 系统上的包管理。
- yum 模块:用于 CentOS 和 RedHat 系统上的包管理。
- dnf 模块:用于 Fedora 和新版 CentOS 系统上的包管理。
- pkg 模块:通用的包管理模块,可以用于多种系统上的包管理。
例如,以下剧本使用 yum 模块安装 Apache 服务器:
---
- hosts: all
tasks:
- name: Create a new user
user:
name: myuser
password: mypassword
state: present
4.3. 系统管理模块
Ansible 提供了多个系统管理模块,如下:
- user 模块:管理系统用户和用户组。
- group 模块:管理系统用户组。
- service 模块:管理系统服务。
- systemd 模块:管理 systemd 服务。
- cron 模块:管理 crontab 定时任务。
例如,以下剧本使用 user 模块创建一个新用户
---
- hosts: all
tasks:
- name: Create a new user
user:
name: myuser
password: mypassword
state: present
4.4. 网络管理模块
Ansible 提供了多个网络管理模块,如下:
- ansible_netmiko_send_command 模块:通过 Netmiko 发送 CLI 命令到网络设备上。
- ios_command 模块:通过 SSH 发送 CLI 命令到 Cisco IOS 设备上。
- nxos_command 模块:通过 SSH 发送 CLI 命令到 Cisco Nexus 设备上。
- junos_command 模块:通过 SSH 发送 CLI 命令到 Juniper 设备上。
例如,以下剧本使用 ios_command 模块获取 Cisco IOS 设备的配置信息:
---
- hosts: network_devices
gather_facts: no
tasks:
- name: Get device configuration
ios_command:
commands
markdown ansible模板的基本用法
以上是关于41学习自动化运维工具 Ansible 的基本用法,包括剧本编写任务执行的主要内容,如果未能解决你的问题,请参考以下文章
Ansible自动化运维工具Ansible常用模块的基本使用