ansible模块

ops/2024/9/20 7:36:45/ 标签: ansible, 网络, 运维

tags模块 可以给任务定义标签,可以根据标签来运行指定的任务

[root@test41 opt]# vim test1.yaml
#标签的类型
#always:设定标签名为always,除非指定跳过这个标签,否则该任务始终会运行,即使指定了标签还会运行
#never:从不运行的任务,指定标签名never可以运行
#debug:用于调试
#setup:收集主机的信息
#标签名也可以自定义:tags
​
- hosts: 192.168.65.10gather_facts: falsetasks:- name: debug-test1debug:msg: 'cow'tags:- debug
​- name: always-test1debug:msg: 'ALWAYS-RUN'tags:- always
​- name: never-test1debug:msg: "Never-run"tags:- never
​- name: setup-test1debug:msg: "SETUP-1"tags:- setup
​
[root@test41 opt]# ansible-playbook test1.yaml --tags=setup
#指定执行哪个
[root@test41 opt]# ansible-playbook test1.yaml --tags="debug","setup"
#跳过指定标签
[root@test41 opt]# ansible-playbook test1.yaml --skip-tags=always
​

创建自定义任务

[root@test41 opt]# ansible-playbook test1.yaml --skip-tags=always
[root@test41 opt]# vim test2.yaml 
​
- hosts: 192.168.65.10remote_user: roottasks:- name: 复制文件copy: src=/etc/hosts dest=/opt/hoststags:- cyp- name: touch filefile: path=/opt/test1.txt state=touchtags:- dly
​
[root@test41 opt]# ansible-playbook test2.yaml --tags=cyp
​
[root@test41 opt]# ansible-playbook test2.yaml --tags=dly
​
[root@test10 opt]# ll
总用量 4
-rw-r--r--. 1 root root 158 8月  23 10:39 hosts
-rw-r--r--. 1 root root   0 8月  23 10:38 test1.txt
​

[root@test41 opt]# cd /etc/httpd/
[root@test41 httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@test41 httpd]# cd conf
[root@test41 conf]# cp httpd.conf /opt/httpd.conf.j2
[root@test41 conf]# cd /opt
[root@test41 opt]# ls
1  httpd.conf.j2  test1.yaml  test2.yaml  test3.yaml
[root@test41 opt]# vim httpd.conf.j2 
42 Listen {{http_port}}
95 ServerName {{server_name}}
119 DocumentRoot "{{root_dir}}"
​
[root@test41 opt]# vim test3.yaml 
#模板,对引用的配置文件初始化:templates模块,jinja组件,把编译过的模板文件传送给目标文件
- hosts: 192.168.65.10gather_facts: falseremote_user: rootvars:- pg: httpd- sv: httpdtasks:- name: install httpdyum: name={{pg}}- name: editon conftemplate: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.confnotify:- restart httpdhandlers:- name: restart httpdservice: name={{sv}} state=restarted
​

[root@test41 ansible]# ls
ansible.cfg  hosts  roles
roles:为了层次化,结构化的组织playbook,使用roles通过层次化自动装载变量,任务和处理器等等
roles把变量,任务和模块的文件单独放置在不同的中,通过roles一键编排
​
[root@test41 ansible]# mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
[root@test41 ansible]# mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
[root@test41 ansible]# mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p
[root@test41 ansible]# yum -y install tree
已安装:tree.x86_64 0:1.6.0-10.el7                                                      
​
完毕!
​
roles:
├── httpd                     角色名称 自定义│   ├── defaults           存放配置文件的目录,可以不写│   ├── files              存档copy模块或者script│   ├── handlers           存放处理器文件的目录│   ├── meta               保存角色源信息的文件│   ├── tasks              保存任务的文件│   ├── templates          保存模板的文件│   └── vars               保存变量的文件
就是把原来写在一个yanl的配置,分开---->不同目录---->保存在一个名字的yanl里面
执行的时候调用不同目录的同一个yaml文件
文件名必须是:main.yaml

ansible:14个模块必须掌握,熟练。

剧本:能够定义一般意义的远程部署和相关的配置即可

了解条件判断,循环,

tags作用 标签的系统标签:always never 自定义

templates:了解即可

roles:了解即可

配置主机清单,实现免密钥对登录。声明ip地址列表

1、在目标主机批量创建目录:/opt/test1 /opt/test2 /opt/test3

2、从主机批量复制文件,123 456 789,分别输出到指定的123-->test1 456---->test2 789---->test3 指定主机为192.168.233.20.

3、创建一个nginx.conf文件,改配置文件可以实现upstream反向代理 复制到nginx1

4、分别在nginx2和nginx3上配置页面: test1 test2

5、在主机访问目标主机nginx1,实现负载均衡。

以上步骤全部用ansible远程完成!

[root@test41 opt]# vim test1.yaml
#在目标主机批量创建目录:/opt/test1 /opt/test2 /opt/test3
#从主机批量复制文件,123 456 789,分别输出到指定的123-->test1 456---->test2 789---->test3
指定主机为192.168.233.20.
- name: this is ifhosts: allremote_user: roottasks:- name: chuangjianfile:path: "{{ item }}"state: directorywith_items: [/opt/test1,/opt/test2,/opt/test3]when: ansible_default_ipv4.address == "192.168.65.50"- name: fuzhicopy:src: "{{ item.src }}"dest: "{{ item.dest }}"loop:- { src: '123', dest: '/opt/test1' }- { src: '456', dest: '/opt/test2' }- { src: '789', dest: '/opt/test3' }when: ansible_default_ipv4.address == "192.168.65.50"
​
#创建一个nginx.conf文件,改配置文件可以实现upstream反向代理 复制到nginx1- name: fuzhi nginx.confhosts: 192.168.65.50become: yestasks:- name: nginx.conf copy:src: nginx.confdest: /etc/nginx/nginx.confnotify:- restart nginxhandlers:- name: Restart nginxservice:name: nginxstate: started​
#分别在nginx2和nginx3上配置页面: test1 test2
- name: Nginx servershosts: alltasks:- name: yemian nginx1shell: echo "this is test1" > /usr/share/nginx/html/index.htmlwhen: ansible_default_ipv4.address == "192.168.65.20"- name: yemian nginx3shell: echo "this is test2" > /usr/share/nginx/html/index.htmlwhen: ansible_default_ipv4.address == "192.168.65.30"
​
#在主机访问目标主机192.168.65.50,实现负载均衡。
[root@test50 nginx]# curl 192.168.65.50
this is test2
[root@test50 nginx]# curl 192.168.65.50
this is test1
[root@test50 nginx]# curl 192.168.65.50
this is test2
[root@test50 nginx]# curl 192.168.65.50
this is test2
[root@test50 nginx]# curl 192.168.65.50
this is test1
[root@test50 nginx]# curl 192.168.65.50
this is test1
[root@test50 nginx]# curl 192.168.65.50
this is test1
​
[root@test41 opt]# vim nginx.conf
httpupstream xy102 {server 192.168.65.20;server 192.168.65.30;}
​server {listen 80;
​location / {root   html;index  index.html index.htm;proxy_pass http://xy102;}
​

1


http://www.ppmy.cn/ops/99207.html

相关文章

后端开发刷题 | 合并k个已排序的链表

描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围&#xff1a;节点总数 0≤n≤5000&#xff0c;每个节点的val满足 ∣val∣<1000 要求&#xff1a;时间复杂度 O(nlogn) 示例1 输入&#xff1a; [{1,2,3},{4,5,6,7}] 返回值&#xff1a; …

GO-REDIS的一些高级用法

1. 前言 说到Golang的Redis库&#xff0c;用到最多的恐怕是 redigo 和 go-redis。其中 redigo 不支持对集群的访问。 本文想聊聊go-redis 2个高级用法。 2. 开启对Cluster中Slave Node的访问 在一个负载比较高的Redis Cluster中&#xff0c;如果允许对slave节点进行读操作将…

指针编译后

指针编译后 指针变量解引用 指针变量 普通变量存数字 指针变量存一个地址&#xff0c;在riscv下表现为s0-x&#xff0c;即以帧指针为偏移&#xff0c;在栈上存一个地址值 解引用 行为表现为&#xff0c;会把指针变量的地址加载到寄存器&#xff0c;在去加载这个地址的所在位…

数据结构----红黑树

小编会一直更新数据结构相关方面的知识&#xff0c;使用的语言是Java&#xff0c;但是其中的逻辑和思路并不影响&#xff0c;如果感兴趣可以关注合集。 希望大家看完之后可以自己去手敲实现一遍&#xff0c;同时在最后我也列出一些基本和经典的题目&#xff0c;可以尝试做一下。…

京东-接口php

如果要在 PHP 中使用京东的官方接口&#xff0c;你可以通过京东宙斯开放平台来实现。以下是一般的步骤&#xff1a; 一、注册成为开发者 访问京东宙斯开放平台数据接口企业级数据服务商注册账号并登录&#xff0c;然后申请成为开发者。 二、创建应用 在开放平台上创建应用&…

stm32f1xx中的几个ID

目录 一、ID的作用二、ID的说明产品唯一身份标识MCU ID codeJTAG IDJEDEC-106 ID 三、自定义ID 一、ID的作用 在物联网系统中产品的ID不可或缺&#xff0c;产品组网后就需要一个身份去让网里其它的设备去识别自己&#xff1b; ID表示的含义可能多种多样&#xff0c;如一个生产批…

Redis内存淘汰

Redis内存淘汰 Redis可以存储多少数据 maxmemory配置&#xff0c;默认是注释掉的。 #maxmemory <bytes>我们可以主动配置maxmemory&#xff0c;maxmemory支持各种单位&#xff0c;默认是字节 maxmemory 1024 maxmemory 1024KB maxmemory 1024MB maxmemory 1024GB当Re…

在Spring Boot项目中集成Geth(Go Ethereum)

在Spring Boot项目中集成Geth&#xff08;Go Ethereum&#xff09;客户端&#xff0c;通常是为了与以太坊区块链进行交互。以下是一些基本的步骤和考虑因素&#xff0c;帮助你在Spring Boot应用程序中集成Geth。 安装Geth 首先&#xff0c;你需要在你的机器上安装Geth。你可以从…

STM32后备区域:读写BKP备份寄存器与使用RTC实时时钟详解

目录 STM32后备区域&#xff1a;读写BKP备份寄存器与使用RTC实时时钟详解 1 什么是STM32的后备区域 分割线* 2.1 BKP备份寄存器简介 2.2 BKP备份寄存器基本结构 2.3 BKP外设头文件 bkp.h介绍 2.4 读写 BKP备份寄存器 操作步骤 2.5 编写 读写备份寄存器 5.1 文件介绍 …

LVGL配置FatFs文件系统,实现对STM32的SD卡数据读写

0、前言 在前面两篇博客文章中&#xff0c;已经介绍了如何将LVGL移植到STM32平台和如何将FatFs R0.15文件系统移植到STM32上&#xff0c;因此本文对这些内容将不再重复讲解。如需下载对应的工程文件&#xff0c;请进入对应的文章&#xff0c;即可找到对应的资源下载包。 LVGL移…

问题记录:/bin/bash^M: 解释器错误:没有那个文件或目录(bad interpreter: No such file or directiry)

问题描述 运行脚本时报错如下&#xff1a; /bin/bash^M: 解释器错误&#xff1a;没有那个文件或目录&#xff08;bad interpreter: No such file or directiry&#xff09; 原因分析 脚本文件在windows下编辑过&#xff0c;windows下行结尾是\n\r&#xff0c;而Linux下则是\…

零工市场小程序应该有什么功能?

数字经济现如今正飞速发展&#xff0c;零工市场小程序在连接雇主与自由职业者方面发挥着越来越重要的作用。一个高效的零工市场小程序不仅需要具备基础的信息发布与匹配功能&#xff0c;还应该涵盖交易管理、安全保障以及个性化服务等多个方面。 那么&#xff0c;零工市场小程…

如何避免Mysql RR 隔离级别下的 INSERT 死锁

背景 我们公司架构师&#xff0c;在使用 Mysql 做分布式锁的时候&#xff0c;因 insert 唯一键冲突&#xff0c;造成死锁。引起我对这部分知识点的兴趣和研究。 死锁日志的详细信息如下&#xff1a; LATEST DETECTED DEADLOCK ------------------------ 2024-08-19 16:32:45 0…

关于Java中@Component的使用中出现@Autowired为NULL的问题

目录&#xff1a; 关于Java中Component的使用中出现Autowired为NULL的问题解决过程 关于Java中Component的使用中出现Autowired为NULL的问题 解决过程 我在写一个项目中使用Component配置了一个RedisCompent在这里插入代码片类我将在AccountController和 UserinfoController中…

TCP/UCP

Loop本地回环 定义&#xff1a;Loop本地回环通常指的是以127开头的IP地址段&#xff08;127.0.0.1 – 127.255.255.254&#xff09;&#xff0c;其中127.0.0.1是最常用的地址&#xff0c;被称为本地回环地址&#xff08;Loop back address&#xff09;。特点&#xff1a;不属于…

人机环境系统智能中有三种神经网络相互作用

在人机环境生态系统智能中&#xff0c;人、机器和环境之间的相互作用确实涉及到三种神经网络的协作&#xff0c;分别是人的神经网络、机器的神经网络和环境的神经网络。 1. 人的神经网络 人的神经网络指的是人类大脑及其神经系统的复杂结构&#xff0c;通过神经元之间的连接来处…

解决雪崩的方案之一:流量控制

​​​​​​​ 1.簇点链路 2.设置流控模式 2.1设置直接流控模式 2.2.设置关联流控模式 2.3设置链路流控模式 2.4总结 3.设置流控效果 3.1warm up 预热模式 3.2排队等待 3.3总结 4.热点参数限流 4.1全局参数限流 4.2热点参数限流 解决雪崩的方案之一&#xff1a;…

【Redis】Redis数据结构——Hash 哈希

哈希 命令hsethgethexistshdelhkeyshvalshgetallhmgethlenhsetnxhincrbyhincrbyfloat命令小结 内部编码使用场景缓存⽅式对⽐ ⼏乎所有的主流编程语⾔都提供了哈希&#xff08;hash&#xff09;类型&#xff0c;它们的叫法可能是哈希、字典、关联数组、映射。在 Redis 中&#…

WRF-LES与PALM微尺度气象大涡模拟

针对微尺度气象的复杂性&#xff0c;大涡模拟&#xff08;LES&#xff09;提供了一种无可比拟的解决方案。微尺度气象学涉及对小范围内的大气过程进行精确模拟&#xff0c;这些过程往往与天气模式、地形影响和人为因素如城市布局紧密相关。在这种规模上&#xff0c;传统的气象模…

Python 爬虫入门(十二):正则表达式「详细介绍」

Python 爬虫入门&#xff08;十二&#xff09;&#xff1a;正则表达式 前言一、正则表达式的用途二、正则表达式的基本组成元素2.1 特殊字符2.2 量词2.3 位置锚点2.4 断言2.5 字符集2.6 字符类2.6.1 基本字符类2.6.2 常见字符类简写2.6.3 POSIX字符类2.6.4 组合使用 三、 正则表…