- 博客(191)
- 收藏
- 关注
原创 python本地测试链表的中间节点
python本地测试链表的中间节点#定义一个单向链表class ListNode: #使用__init__方法绑定属性,__init__方法第一参数永远是self,表示创建的类实例本身, #若有__init__方法,创建实例时,需要传入相应的参数,但是self不需要传,python解释器会自己把实例变量传进去。self指的是类本身 def __init__(self, val=0,next=None): self.val = val s
2022-04-25 14:03:38 1345
原创 python 快速排序详解
python 快速排序详解def partition(arr,low,high):i = ( low-1 ) #最小元素<索引>pivot = arr[high] #选取最右边的数为基准for j in range(low , high): # 当前元素小于或等于 pivot if arr[j] <= pivot: i = i+1 #有调换,i的索引值加
2022-04-08 18:33:47 1667
原创 Saltstack实现zabbix监控的自动安装部署
一、Saltstack多节点推送实现zabbix监控的自动安装部署实验环境:主机名ip服务server1172.25.1.1salt-master、salt-minion、mariadb数据库server2172.25.1.2salt-minion、zabbix-server服务端、zabbix-agent客户端server3172.25.1.3salt-minion、zabbix-web前端思路:server1做数据库,server2做zabbix服
2020-05-20 21:39:37 361
原创 Saltstack 之salt-api 简介及配置
一、salt-api简介SaltStack 官方提供有REST API格式的 salt-api 项目,将使Salt与第三方系统集成变得尤为简单。官方提供了三种api模块:rest_cherrypyrest_tornadorest_wsgi官方链接:https://docs.saltstack.com/en/latest/ref/netapi/all/index.html#all-netapi-modules二、salt-api配置及使用安装salt-api:[root@server1 ~
2020-05-20 21:06:56 578
原创 Saltstack 中 salt-syndic简介及部署
一、salt-syndic简介如果大家知道zabbix proxy的话那就很容易理解了,syndic其实就是个代理,隔离master与minion。Syndic必须要运行在master上,再连接到另一个topmaster上。Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster。topmaster并不知道有多少个minion。syndic与topmaster的file_roots和pillar_ro
2020-05-20 20:03:52 421
原创 SaltStack 外部缓存数据库的部署及job管理介绍
一、Job简介master在下发指令任务时,会附带上产生的jid。minion在接收到指令开始执行时,会在本地的/var/cache/salt/minion/proc目录下产生该jid命名的文件,用于在执行过程中master查看当前任务的执行情况。指令执行完毕将结果传送给master后,删除该临时文件。Job缓存默认保存24小时:master 端Job缓存目录:/var/cache/salt/master/jobs查看所有minion当前正在运行的jobs(在所有minions上运行saltut
2020-05-20 19:56:01 210
原创 Saltstack 中Jinja模板的使用
一、Jinja模板简介Jinja是一种基于python的模板引擎,在SLS文件里可以直接使用jinja模板来做一些操作。通过jinja模板可以为不同服务器定义各自的变量。两种分隔符: {% … %} 和 {{ … }},前者用于执行诸如 for 循环 或赋值的语句,后者把表达式的结果打印到模板上(引用)。二、Jinja模板使用方式使用控制结构包装条件Jinja最基本的用法是使用控制结构包装条件:[root@server1 salt]# vim test.sls[root@server1 sa
2020-05-20 16:52:35 370
原创 saltstack中grains与pillar详解
一、grains简介Grains是SaltStack的一个组件,存放在SaltStack的minion端。当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新。由于grains是静态数据,因此不推荐经常去修改它。应用场景:信息查询,可用作CMDB。在target中使用,匹配minion。在state系统中使用,配置管理模块。信息查询用于查询minion端的IP、FQDN等信息默认可用的grains:[root@serve
2020-05-19 23:28:21 513
原创 SaltStack实现nginx自动编译安装
SaltStack下nginx自动安装部署实验环境主机名ip服务server1172.25.1.1服务端 salt-masterserver2172.25.1.2客户端 salt-minionserver3172.25.1.3客户端 salt-minion实验步骤一:在数据文件默认存放路径下编辑nginx安装编译文件nginx-install: pkg.installed: #安装包 - pkgs: - gcc
2020-05-19 23:12:49 215
原创 Saltstack 远程执行相关介绍(命令方式及文件编写)
一、命令方式Salt命令由三个主要部分构成:salt '<target>' <function> [arguments]target: 指定哪些minion, 默认的规则是使用globe匹配minion id.salt内置的执行模块列表:http://docs.saltstack.cn/ref/modules/all/index.html[root@server1 minions]# salt '*' test.pingserver2: Trueserver3
2020-05-19 22:57:27 470
原创 Saltstack简介及部署
一、认识SaltStack1、简介SaltStack 是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,是基于python开发的一套C/S自动化运维工具,通信采用了zeromq消息队列的(pub/sub),数据传输采用了AES(高级加密)保证安全性,认证采用了SSL方式。通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规
2020-05-19 22:15:10 558
原创 k8s集群的部署
1. 实验环境主机信息主机功能server1(172.25.1.1)k8s集群的master节点server2(172.25.1.2)k8s集群的worker节点1server3(172.25.1.3)k8s集群的worker节点2在server1、server2、server3上面安装docker服务,并且开启docker安装请参考 https:...
2020-04-17 16:52:34 318
原创 docker容器详解
容器使用容器是通过镜像生成的获取镜像如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:docker pull ubuntu下载速度慢的化可以设置镜像加速器也可以使用以下命令导入本地镜像:docker load -i game2048.tar启动容器以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容...
2020-04-16 21:02:38 294
原创 Docker镜像详解
一. 什么是docker 镜像就是把业务代码,可运行环境进行整体的打包二. 如何创建docker镜像:现在docker官方共有仓库里面有大量的镜像,所以最基础的镜像,我们可以在公有仓库直接拉取,因为这些镜像都是原厂维护,可以得到即使的更新和修护。Dockerfile:我们如果想去定制这些镜像,我们可以去编写Dockerfile,然后重新bulid,最后把它打包成一个镜像,这种方式是最为...
2020-04-16 20:50:35 680
原创 Docker镜像加速器的设置
首先登陆阿里云,没有帐号的可以注册一个:https://www.aliyun.com/?spm=5176.12901015.0.i12901015.6cbc525cOvAEZz登陆完成后点击控制台:点击产品与服务----->容器与镜像服务:选择镜像加速器,复制图中的网址:每个用户的链接都是专属的,复制链接后配置加速:cd /etc/docker/vim daemon.jso...
2020-04-16 18:44:05 174
原创 Docker----harbor的安装部署过程
1.harbor的简介Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资...
2020-04-11 17:17:26 282
原创 Docker容器技术简介
Docker简介Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker 从 17.03 ...
2020-04-11 15:58:08 604
原创 ansible 中的模板 jinja2模板引擎(三)
一、转义的一些操作前文中我们已经总结了jinja2模板的一些基础用法,比如,变量和表达式被包含在"{{ }}“中,控制语句被包含在”{% %}", 注释被包含在"{# #}“中,也就是说,在模板文件中,一旦遇到”{{ }}"、"{% %}“或者”{# #}",jinja2模板引擎就会进行相应的处理,最终生成的文件内容中并不会包含"{{ }}“或者”{% %}“这些字符,但是如果,最终生成的文件中...
2020-04-06 17:39:46 682
原创 ansible 中的模板 jinja2模板引擎(二)
前一篇文章中我们提到过,在jinja2中,使用"{% %}“对控制语句进行包含,比如"if"控制语句、“for"循环控制语句等 都需要包含在”{% %}“中,那么这篇文章我们就来聊聊”{% %}”。一、"if"控制语句if结构先来聊聊if,与其他语言相同,if用来进行条件判断,在jinja2中,if的语法如下:{% if 条件 %}.........{% endif %}如你所...
2020-04-06 17:26:30 1212
原创 ansible 中的template模块 jinja2模板引擎(一)
一、ansible 中的模板的作用当安装完 redis 以后,redis默认配置的监听地址为"127.0.0.1",这样是安全的,但是,如果我需要让redis监听在非"127.0.0.1"的IP地址上,以便让其他主机也能够使用本机上的redis服务,那么我就需要修改默认的配置,没错,修改redis配置文件中的bind设置,即可将redis绑定在指定的IP上,假设,现在需要一次性在10台主机上安装...
2020-04-06 17:08:53 1013
原创 ansible 中的loop循环以及过滤器
在2.5版本之前的ansible中,大多数人习惯使用"with_X"风格的关键字操作循环,从2.6版本开始,官方开始推荐使用"loop"关键字代替"with_X"风格的关键字,我们先来看一个小示例,使用loop关键字进行最简单的列表循环,示例如下:[root@server4 ~]# vim loopxh1.yml[root@server4 ~]# cat loopxh1.yml ---- ...
2020-04-06 16:41:57 2785
原创 ansible 中的 lookup插件详解
前文中,我们总结了一些"过滤器"的使用方法,“过滤器"其实是ansible中的一种"插件”,除了过滤器,ansible中还有很多其他种类的插件,比如我们之前总结的"tests",也是插件的一种,ansible官网为我们总结了各个插件的作用,并且将这些插件按照功能进行了分类,如果你想要了解它们,可以访问官网的插件概览页面,地址如下:https://docs.ansible.com/ansible/...
2020-04-06 16:27:37 1377
原创 ansible playbook中的过滤器
现在我有一个需求,我想要将获取到的变量的值中的所有字母都变成大写,如果想要在playbook中实现这个需求,我该怎么办呢?我可以借助一个叫做"过滤器"的东西,帮助我完成刚才的需求,"过滤器(filters)"可以帮助我们对数据进行处理,这样解释可能不够直观,不如这样,我们先来看一个过滤器的小例子,然后结合示例解释过滤器是个什么东西,示例如下:[root@server4 ~]# vim gl1.y...
2020-04-06 16:11:07 841
原创 ansible playbook中的条件判断与错误处理(fail模块 failed_when changed_when关键字)
一、fail模块在编写shell脚本时,有可能会有这样的需求,当脚本执行到某个阶段时,需要对某个条件进行判断,如果条件成立,则立即终止脚本的运行,在shell脚本中实现这个需求很简单,只需要在条件成立时调用"exit"命令即可终止脚本的运行, 那么在编写playbook时,如果有类似的需求,我们该怎么办呢?想要在playbook中按照我们的意愿中断剧本的执行,其实也很简单,我们只需要借助一个模...
2020-04-06 13:14:23 8562
原创 ansible playbook 中的条件判断与block
前文中,我们使用"when"关键字对条件进行判断,如果条件成立,则执行对应的任务,但是,我们可以发现,当条件成立时,我们只能执行一个任务,如果我们想要在条件成立时,执行三个任务,该怎么办呢?难道我们要在这三个任务的每个任务中都加入相同的条件判断么?这种方法也太麻烦了,显然应该有更好的方法,没错,我们可以借助"block"解决这个小问题。在ansible中,可以使用"block"关键字将多个任务整...
2020-04-06 12:59:48 958
原创 ansible playbook中的条件判断 tests
条件判断 tests在linux中,我们可以使用test命令进行一些常用的判断操作,比如,使用test命令判断"/testdir"是否存在,示例如下[root@server4 ~]# test -e /testdir[root@server4 ~]# echo $?0[root@server4 ~]# [root@server4 ~]# test -e /optt[root@serv...
2020-04-06 12:47:54 791
原创 ansible playbook 中的条件判断
之前的文章总结了大多数循环关键字的使用方法,这篇文章总结一下ansible中条件判断的用法。绝大多数语言中,都使用"if"作为条件判断的关键字,而在ansible中,条件判断的关键字是"when",我们来看一个简单的示例,如下[root@server4 ~]# vim pd.yml[root@server4 ~]# cat pd.yml ---- hosts: testB remot...
2020-04-06 12:18:36 2221
原创 ansible playbook中的循环(六)with_file 和 with_fileglob
一、with_file假设你的ansible主机中有几个文件(注意:是ansible主机中的文件,不是远程目标主机中的文件),你想要获取到这些文件的内容,那么可以借助"with_file"关键字,循环的获取到这些文件的内容,示例如下:[root@server4 ~]# vim xh23.yml[root@server4 ~]# cat xh23.yml ---- hosts: testB...
2020-04-04 17:11:40 2973
原创 ansible playbook中的循环(五)---(with_dict 和 with_subelements)
今天继续来认识两个用于循环的关键字,它们是"with_dict"和"with_subelements"1.with_dict先来看"with_dict",顾名思义,"with_dict"的使用场景应该与"字典"有关,我们先来看一个小例子,结合示例更加容易说明白,示例playbook如下:[root@server4 ~]# vim xh19.yml[root@server4 ~]# cat ...
2020-04-04 17:01:14 1537
原创 ansible playbook中的循环(四)---(with_sequence 和 with_random_choice)
with_sequence现在我有一个需求,我需要使用ansible在目标主机中创建5个目录,这5个目录的名字是test2、test4、test6、test8、test10,我该怎么办呢?当然,我可以使用shell模块执行一条命令去完成,但是我们现在正在总结"循环"的使用方法,所以,我要用循环完成这个需求,使用循环完成这个任务很简单,我们只需要借助一个循环的关键字,它就是"with_sequen...
2020-04-04 16:46:08 714
原创 ansible playbook中的循环(三)-----(with_cartesian,with_nested和with_indexed_items)
前文中我们已经了解了一些用于循环的关键字,比如 with_list、with_items、with_flattened、with_together,这篇文章我们继续。假设,现在我有一个需求,我需要在目标主机的测试目录中创建a、b、c三个目录,这三个目录都有相同的子目录,它们都有test1和test2两个子目录,使用最原始的办法,我们可以在目标主机上执行如下一堆命令# pwd/testdir/...
2020-04-04 16:23:49 1071 1
原创 ansible中的循环(二)-----(with_items with_list with_flattened with_together介绍)
文中,我们总结了with_items的用法,你肯定还有印象,我们可以把定义列表的两种语法结合起来使用,结合后可以定义出稍微复杂一些的结构,比如嵌套的列表(序列中的序列),示例如下[root@server4 ~]# vim xh8.yml[root@server4 ~]# cat xh8.yml ---- hosts: testB remote_user: root gather_...
2020-04-04 16:15:25 1003
原创 ansible 中的循环(一)---with-items
1.ansible 中循环的介绍在使用ansible的过程中,我们经常需要处理一些返回信息,而这些返回信息中,通常可能不是单独的一条返回信息,而是一个信息列表,如果我们想要循环的处理信息列表中的每一条信息,我们该怎么办呢?这样空口白话的描述有些费力,不如通过一些小示例,结合场景来描述。假设,我的清单配置如下172.25.1.1testB.westos.com ansible_host=17...
2020-04-02 18:45:31 4032
原创 ansible playbook的变量用法相关介绍(四)----内置变量
1.内置变量ansible_version先从一个简单的内置变量说起,比如,我们可以通过内置变量ansible_version获取到ansible的版本号,示例命令如下[root@server4 script]# ansible testB -m debug -a "msg={{ansible_version}}"2. 内置变量inventory_hostname通过inventory...
2020-04-02 16:54:59 1648
原创 ansible playbook 中的变量用法相关介绍(三)----set_fact模块,跨play调用变量
1.通过set_fact定义变量set_fact是一个模块,我们可以通过set_fact模块在tasks中定义变量,先来看一个小示例,如下[root@server4 ~]# vim set1.yml [root@server4 ~]# cat set1.yml ---- hosts: testB remote_user: root tasks: - set_fact: ...
2020-04-02 16:31:08 3555
原创 ansible playbook 中的变量用法相关介绍(二)
1.注册变量ansible的模块在运行之后,其实都会返回一些”返回值”,只是默认情况下,这些”返回值”并不会显示而已,我们可以把这些返回值写入到某个变量中,这样我们就能够通过引用对应的变量从而获取到这些返回值了,这种将模块的返回值写入到变量中的方法被称为”注册变量”,那么怎样将返回值注册到变量中呢?我们来看一个playbook示例[root@server4 ~]# vim bl_test.ym...
2020-04-01 18:58:17 861
原创 ansible playbook中 tags 的用法
1.问题提出如果你写了一个很长的playbook,其中有很多的任务,这并没有什么问题,不过在实际使用这个剧本时,你可能只是想要执行其中的一部分任务而已,或者,你只想要执行其中一类任务而已,而并非想要执行整个剧本中的全部任务,这个时候我们该怎么办呢?我们可以借助tags实现这个需求。见名知义,tags可以帮助我们对任务进行打标签的操作,当任务存在标签以后,我们就可以在执行playbook时,借助...
2020-04-01 15:11:30 1303 1
原创 ansible之playbook中handlers的相关用法
在开始介绍它们之前,我们先来描述一个工作场景。1.问题的提出当我们修改了某些程序的配置文件以后,有可能需要重启应用程序,以便能够使新的配置生效,那么,如果使用playbook来实现这个简单的功能,该怎样编写playbook呢?我们来试试,此处我们使用httpd作为示例,虽然httpd可以使用systemctl restart httpd命令重载配置,但是此处的示例中并不会使用这个命令,而是用...
2020-03-31 19:21:50 969
原创 ansible中playbook基础知识介绍(编译,语法,以及一些简单的脚本)
1.playbook简介前文中,我们介绍了一些ansible的常用模块,聪明如你,一定已经掌握了这些模块的使用方法。那么现在,我们来想象一个工作场景,看看怎样把之前的知识点应用到这个工作场景中。假设,我们想要在testB(server3)主机上安装httpd并启动,我们可以在ansible主机中执行如下3条命令ansible testB -m yum_repository -a 'name...
2020-03-31 18:28:42 1299
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人