当前位置: 首页 > news >正文

一文了解Ansible原理以及常见使用模块

ansible使用手册

1. 简述

Ansible 是一种开源的自动化工具,主要用于配置管理、应用程序部署和任务自动化。
它使用简单的 YAML 语言来定义自动化的任务【playbook】,使得配置和部署变得更加直观和易于管理。
基于SSH协议连接到远程主机来执行指令。

2. ansible特性

1.丰富的模块化管理
2.通过yaml格式 编写playbok批量部署服务
3.基于OpenSSH服务相对比较安全,它不需要在被管理的主机上安装代理软件。
4.一个任务执行一次和执行多次的结果相同
5.管理模式容易,一条命令可以影响上千台主机

3. 架构

● 控制节点:运行 Ansible 的机器。
● 被管理节点:需要被配置或管理的机器。
● 清单文件:定义了 Ansible 要管理的主机和主机组。
● Playbook:用 YAML 编写的配置文件,定义了如何配置和管理主机。
● 角色:组织 Playbook 的一种方式,可以将任务、变量和文件等封装在一个模块中。
在这里插入图片描述

4. Ansible 基本概念

●清单(Inventory):列出所有被管理的主机或主机组的文件。默认位置是 /etc/ansible/hosts,可以自定义路径。

vim /opt/ansible/Inventory/all_hosts
[hosts]
10.127.192.5
10.127.192.195[node]
10.127.192.195[webservers]
10.127.192.5[all:vars]
# root可以直连
#ansible_ssh_user="root"
#ansible_ssh_pass="xxxxx"# 非root用户sudo
ansible_user=dev01
ansible_ssh_pass='d5qAPDG^F6rA*C9p'
ansible_become=True
ansible_become_method=sudo

●Playbook:定义任务的执行步骤,使用 YAML 格式。每个 Playbook 可以包含多个 plays,每个 play 针对一组主机执行任务。
例如:如下,利用ansible-playbook安装apache服务

vim install_apache.yml
---
- name: Install and configure Apachehosts: webserversbecome: yestasks:- name: Install Apache packageapt:name: apache2state: presentupdate_cache: yes- name: Ensure Apache is running and enabledservice:name: apache2state: startedenabled: yes- name: Copy a custom index.html filecopy:src: index.htmldest: /var/www/html/index.htmlowner: www-datagroup: www-datamode: '0644'

执行ansible-playbook指令

ansible-playbook -i ./inventory/all_hosts install_apache.yml

●任务(Task):在 Playbook 中定义的具体操作步骤,如安装软件、启动服务等。
●角色(Role):用来组织 Playbook,使其更具可重用性和模块化。每个角色包含任务、处理程序、文件、模板等。

5.常用的Ansible模块

5.1. 文件模块

copy:将文件从本地复制到远程主机
template:将本地文件复制到远程主机上,并进行变量替换
file:管理文件和目录,如创建、删除、修改等操作
fetch:从远程主机上获取文件

5.2. 系统模块

command:在远程主机上执行命令
shell:在远程主机上执行 shell 命令

5.3. 包管理模块

yum:管理CentOS和RedHat等Linux系统上的软件包

5.4. 服务模块

service:管理系统服务,如启动、停止、重启、重载等操作
firewalld:管理防火墙中的服务和端口

5.5. 用户模块

user:管理系统用户和用户组,如创建、删除、修改等操作
group:管理系统用户组,如创建、删除、修改等操作

5.6. 调试和测试类模块

ping:ping 一下你的远程主机,如果可以通过Ansible连接成功,那就范围 pong。
debug:用于调试的模块,只是打印一些简单消息,有点像Linux的 echo命令

6. 模拟测试

6.1. 测试网络连接连接

ansible all -m ping
ansible hosts -m ping

6.2. 命令测试

1. shell模块
ansible -i ./inventory/ hosts -m shell -a "ls"
2. command模块
ansible -i ./inventory/ hosts -m command -a "ls"

command模块和shell模块不同之处
command模块不支持"&&“和”>>"

如下可显示:
在这里插入图片描述

3. yum模块
ansible -i ./inventory/ hosts -m yum -a "name=rsync state=present"
4. copy模块

使用Ansible的copy模块复制文件到远程主机:

ansible all -m copy -a 'src=/etc/hosts dest=/tmp/hosts'
5. service模块

使用Ansible的service模块管理服务:

ansible all -m service -a 'name=httpd state=started'
6. user模块

使用Ansible的user模块管理用户:
创建user用户

ansible all -m user -a 'name="testuser" state=present'

删除用户

ansible all -m user -a 'name="testuser" state=absent'

6.3. playbook测试

ansible-playbook -i ./inventory/all_hosts apache.yaml

利用ansible-playbook部署完后,可用如下检测是否安装成功

ansible -i ./inventory/ hosts -m shell -a "systemctl status httpd"
http://www.lryc.cn/news/430207.html

相关文章:

  • JavaEE从入门到起飞(九) ~Activiti 工作流
  • 微服务的保护
  • 2024前端面试题-网络篇
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector
  • 设计模式---简单工厂模式
  • Vue | Vue 中的 refInForde 用法
  • 【原创】java+swing+mysql房屋租赁管理系统设计与实现
  • Django 中render、redirect 和 HttpResponse的区别
  • CRYPTO 2020
  • java 函数接口Consumer简介与示例【函数式编程】【Stream】
  • 黑神话:悟空-配置推荐
  • Android14 蓝牙设备类型修改
  • vue3 语法糖<script setup>
  • 微服务设计原则——高性能:异步与并发
  • 机器学习——决策树,朴素贝叶斯
  • C语言基础(十)
  • 人像比对-人证比对-人脸身份证比对-人脸身份证实名认证-人脸三要素对比-实人认证
  • Android 上下滑隐藏显示状态栏
  • USBCAN-II/II+使用方法以及qt操作介绍
  • 笔记-系统规划与管理师-案例题-2022年-IT服务部署实施
  • Kubernetes 清理资源常用的 Kubernetes 清理命
  • 【数据结构初阶】二叉树--基本概念
  • Pytorch添加自定义算子之(12)-开闭原则设计tensorrt和onnxruntime推理语义分割模型
  • 第二百零九节 Java格式 - Java数字格式类
  • LSI-9361阵列卡笔记
  • ArcGIS热点分析 (Getis-Ord Gi*)——基于地级市尺度的七普人口普查数据的热点与冷点分析
  • ASIACRYPT 2021
  • C#学习之路day1
  • 【安当产品应用案例100集】010-基于国密UKEY的信封加密应用案例
  • 扫码点餐系统小程序功能分析