广告
返回顶部
首页 > 资讯 > 后端开发 > Python >saltstack的深入-管理pytho
  • 221
分享到

saltstack的深入-管理pytho

saltstackpytho 2023-01-31 05:01:29 221人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

saltstack的深入-管理python-pip操作内容: 一、基础环境 1、使用tvm-saltmaster操作 2、网络: eth0:host-only(用于虚拟内网,手动固定IP,这样从宿主机可以直接连接到这个vm) eth1:NA

saltstack的深入-管理python-pip

操作内容:
一、基础环境
1、使用tvm-saltmaster操作
2、网络:
eth0:host-only(用于虚拟内网,手动固定IP,这样从宿主机可以直接连接到这个vm)
eth1:NAT(用于上外网,动态IP)
[root@tvm-zabbix ~]# cd /etc/sysconfig/network-scripts/
[root@tvm-zabbix network-scripts]# cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.56.253
PREFIX=24
GATEWAY=192.168.56.1
DNS1=192.168.56.254

[root@tvm-zabbix network-scripts]# cat ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
DNS1=192.168.56.254


二、配置
1、文件结构
[root@tvm-saltmaster base]# tree ops/
ops/
└── bin.sls

0 directories, 1 file
[root@tvm-saltmaster base]# tree conf.d/ops/
conf.d/ops/
└── bin
    ├── pw
    ├── randchars.py
    └── sendEmail

1 directory, 3 files

2、sls配置
[root@tvm-saltmaster base]# cat ops/bin.sls 

## 此处列出需要的软件包
#
Python-pip:
  pkg.installed:
    - name: python-pip
    - require_in:
      -file: pip-pkgs

pip-pkgs:
  pip.installed:
    - names: 
      - virtualenvwrapper
      - pwgen

/usr/bin/sendEmail:
  file.managed:
    - source: salt://conf.d/ops/bin/sendEmail
    - mode: 755

/usr/bin/pw:
  file.managed:
    - source: salt://conf.d/ops/bin/pw
    - mode: 755

/usr/bin/randchars:
  file.managed:
    - source: salt://conf.d/ops/bin/randchars.py
    - mode: 755
    
    
三、执行
[root@tvm-saltmaster base]# salt 'tvm-*' state.sls ops.bin test=True
[root@tvm-saltmaster base]# salt 'tvm-*' state.sls ops.bin

增加到top.sls中
[root@tvm-saltmaster base]# cat top.sls 
base:
  'tvm-yum':
    - dnsmasq
    - crontab
    - WEB
  'tvm-zabbix':
    - Mysql.server
    - zabbix.server
    - zabbix.web

  '*':
    - abc
    - monit
    - postfix
    - salt.miNIOn
    - ssh
    - vim
    - zabbix.agent
    - ops.bin

    
四、总结
此处使用到:
pip.installed

使用时,需确保安装了python-pip这个包,否则会提示异常。
且pip安装包时,对应的主机可以连接到外网,如果没联网,有如下报错:
----------
          ID: pip-pkgs
    Function: pip.installed
        Name: virtualenvwrapper
      Result: False
     Comment: Failed to install packages: virtualenvwrapper. Error: Collecting virtualenvwrapper   Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /simple/virtualenvwrapper/
                Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /simple/virtualenvwrapper/
                Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /simple/virtualenvwrapper/
                Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /simple/virtualenvwrapper/
                Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /simple/virtualenvwrapper/
                Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /simple/virtualenvwrapper/
                Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /simple/virtualenvwrapper/
                Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /simple/virtualenvwrapper/
                Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /simple/virtualenvwrapper/
                Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /simple/virtualenvwrapper/
                Could not find a version that satisfies the requirement virtualenvwrapper (from versions: )
              No matching distribution found for virtualenvwrapper
     Started: 16:30:04.360978
    Duration: 15536.139 ms
     Changes:   
----------

五、附上几个小工具的用法
1、乱序输出字符 pw
其他人写的一个小脚本,调用的是pip安装的pwgen这个工具
[root@tvm-test ~]# cat /usr/bin/pw
#!/usr/bin/python
#
# 2015/8/14

import os
import sys

def gen_pw():
# yum -y install python-pip
# pip install pwgen
    p = os.popen('/usr/bin/pwgen -1 -B -n 10')
    p = p.read().strip('\n')
    p = p[:5].upper() + p[5:].lower()
    return p

def print_msg():
    p1 = gen_pw()
    p2 = gen_pw()
    #msg = 'root:{0}  root1:{1}'.fORMat(p1,p2)
    msg = '{0} {1}'.format(p1,p2)
    print msg
if __name__ == '__main__':
    print_msg()


2、乱序输出字符 randchar
自己写的一个小脚本,生成一些简单的字符
[root@tvm-test ~]# cat /usr/bin/randchars 
#!/bin/env python
# 
# 2015/08/10

import random

class RandChars(object):
    '''
    RandChars(24).generate()
    '''
    # char pools
    pools = '23456789'
    pools += 'abcdefghijkmnpqrstuvwxyz'
    pools += 'ABCDEFGHIJKMNPQRSTUVWXYZ'
    pools += '~!@#$%^&*()_+'
    # pool size
    pool_size = len(pools)
    
    def __init__(self, length=12):
        self.length = length

    # get a char from pool
    def fetch_one(self):
        rnd_index = random.randint(0, self.pool_size-1)
        return self.pools[rnd_index]

    # map the passWord by index
    def generate(self):
        rnd_chars = ''
        i = 0
        while i < self.length:
            rnd_chars += self.fetch_one()
            i += 1
        return rnd_chars

if __name__ == '__main__':
    try:
        while True:
            print('[-] [press `Ctrl+C` to cancel], default=24: ')
            length = raw_input('Length to generate: ')
            # python3
            #length = input('Length: ')

            if not length:
                length = '24'
            if length.isdigit():
                print('\n\n{0}\n\n'.format(RandChars(int(length)).generate()))
            else:
                print('\n[WARNING] hi, length is digit.\n')
    except KeyboardInterrupt:
        print('\n\n[NOTICE] You cancelled the operation.\n')
    except Exception as err:
        print('\n[ERROR]: {0}\n'.format(err))
        

3、sendEmail
其他人写的脚本
[root@tvm-test ~]# sendEmail -s smtp.company.com \
-xu mail_username@company.com \
-xp mail_password \
-f mail_from@company.com \
-t mail_to@client.com \
-u 'msg title' \
-m 'msg body' \
-a /tmp/p_w_upload.txt 
Aug 14 17:00:10 tvm-test sendEmail[6319]: Email was sent successfully!


ZYXW、参考
1、官网doc
Http://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.pip.html#module-salt.modules.pip


--结束END--

本文标题: saltstack的深入-管理pytho

本文链接: https://www.lsjlt.com/news/188806.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • saltstack的深入-管理pytho
    saltstack的深入-管理python-pip操作内容: 一、基础环境 1、使用tvm-saltmaster操作 2、网络: eth0:host-only(用于虚拟内网,手动固定IP,这样从宿主机可以直接连接到这个vm) eth1:NA...
    99+
    2023-01-31
    saltstack pytho
  • 《深入浅出深度学习:原理剖析与pytho
    8.1 生物神经元(BN)结构 1、人脑中有100亿-1000亿个神经元,每个神经元大约会和其他1万个神经元相连 2、细胞体:神经元的主体,细胞体=细胞核+细胞质+细胞膜,存在膜电位 3、树突:从细胞体向外延伸出许多突起的神经纤维。输入...
    99+
    2023-01-31
    深入浅出 深度 原理
  • ASP.NET Core处理管道的深入理解
    前言 在 ASP.NET Core 的管道处理部分,实现思想已经不是传统的面向对象模式,而是切换到了函数式编程模式。这导致代码的逻辑大大简化,但是,对于熟悉面向对象编程,而不是...
    99+
    2022-06-07
    core net ASP.NET 管道 ASP
  • 深入理解Node.js中的进程管理
    前言 本文主要对 Node.js 中进程管理相关的东西做一个简单介绍,包括 process 对象、child_process 模块和cluster 模块,详细的 API 可以查看官方文档,下面来看看详细的介...
    99+
    2022-06-04
    进程 Node js
  • 深入Android Browser配置管理的详解
    Settings是WebView提供给上层App的一个配置Webview的接口,每个WebView都有一个WebSettings,要控制WebView的行为,只能通过WebVi...
    99+
    2022-06-06
    Android
  • 深入解析vue中的权限管理
    目录vue要做权限管理该怎么做?一、是什么二、如何做接口权限路由权限控制菜单权限方案一方案二按钮权限方案一方案二小结vue要做权限管理该怎么做? 一、是什么 权限是对特定资源的访问...
    99+
    2022-11-13
  • 深入探讨JavaScript中的内存管理
    内存管理是编程语言的基本能力,JavaScript 中的内存管理是通过 V8 完成的。V8 的实现遵循 ECMA-262 规范,而规范中没有阐述内存布局以及内存管理相关信息,所以它的原理取决于解释器的实现。唯一肯定的是不管任何编程语言,内存...
    99+
    2023-05-14
    前端 JavaScript
  • 深入理解JVM自动内存管理
    目录一、前言1.1 计算机==>操作系统==>JVM1.1.1 虚拟与实体(对上图的结构层次分析)1.1.2 Java程序执行(对上图的箭头流程分析)二、JVM内存空间与...
    99+
    2022-11-12
  • 深入理解C#管道式编程
    目录前言基础实现依赖注入条件式组装事件监听可迭代执行总结前言 在 C# 编程中,管道式编程(Pipeline Style programming)其实存在已久,最明显的就是我们经常使...
    99+
    2022-11-12
  • Python深入02 上下文管理器
    上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围。一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存)。它的语法形式是with...as...关闭文件...
    99+
    2023-06-02
  • C/C++深入讲解内存管理
    目录C/C++内存分布C语言中的动态内存管理C++的内存管理operator new与operator delete函数operator new与operator dele...
    99+
    2022-11-13
  • Go 包管理机制深入分析
    前言随着 Go 语言的深入使用,其依赖管理机制也一直是各位 Gopher 热衷于探讨的话题。Go 语言的源码依赖可通过 go get 命令来获取,但自动化程度不高,于是官方提供了 Dep 这样的自动化批量管理依赖的工具。...
    99+
    2023-06-04
  • 深入浅析Java中的Hibernate事务管理
    深入浅析Java中的Hibernate事务管理?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。环境与版本hibernate 版本:Hibernate 4.2.2 (下载后的文...
    99+
    2023-05-31
    java hibernate 事务管理
  • Python深入06——python的内存管理详解
    语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征。这里以Python语言为例子,说明一门动态类型的、面向对象的语言的...
    99+
    2022-06-04
    详解 内存管理 Python
  • 深入浅析Java中的Spring事务管理
    深入浅析Java中的Spring事务管理?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。环境与版本本文出来之前的一篇文章中的hibernate的相关lib 外Java事务管理之H...
    99+
    2023-05-31
    java spring ava
  • React Native自定义路由管理的深入理解
    目录1、自定义路由2、Tab导航3、数据回传总结1、自定义路由 众所周知,不管是在原生Android还是iOS,它们都有一个默认的路由路由栈管理类。由于React Native官方...
    99+
    2022-11-12
  • Python上下文管理器深入讲解
    目录引子概念上下文管理协议(Context Management Protocol)上下文管理器(Context Manager)引子 上下文管理器是一种简化代码的有力方式,其内部也...
    99+
    2022-12-21
    Python上下文管理器 Python上下文
  • Python万字深入内存管理讲解
    目录Python内存管理一、对象池1.小整数池2.大整数池3.inter机制(短字符串池)二、垃圾回收2.1.引用计数2.1.1 引用计数增加2.1.2 引用计数减少2.2.标记清除...
    99+
    2022-11-11
  • Java布局管理器深入讨论(转)
    我们都知道,java的GUI界面定义是由awt类和swing类来完成的。它在布局管理上面采用了容器和布局管理分离的方案。也就是说,容器只管将其他小件放入其中,而不管这些小件是如何放置的。对于布局的管理交给专门的布局管理器类(LayoutMa...
    99+
    2023-06-03
  • 深入解析Python中的上下文管理器
    1. 上下文管理器是什么? 举个例子,你在写Python代码的时候经常将一系列操作放在一个语句块中: (1)当某条件为真 执行这个语句块 (2)当某条件为真 循环执行这个语句块 有时候我们需要在当程序在...
    99+
    2022-06-04
    上下文 管理器 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作