我的编程空间,编程开发者的网络收藏夹
学习永远不晚

saltstack的深入-管理pytho

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

saltstack的深入-管理pytho

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


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

saltstack的深入-管理pytho

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

下载Word文档

猜你喜欢

saltstack的深入-管理pytho

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

《深入浅出深度学习:原理剖析与pytho

8.1 生物神经元(BN)结构1、人脑中有100亿-1000亿个神经元,每个神经元大约会和其他1万个神经元相连2、细胞体:神经元的主体,细胞体=细胞核+细胞质+细胞膜,存在膜电位3、树突:从细胞体向外延伸出许多突起的神经纤维。输入端4、轴突
2023-01-31

SaltStack配置管理入门教程:快速上手

SaltStack是一款开源的配置管理工具,可实现对服务器的远程控制、配置和维护,适用于各种规模的IT环境。本教程将介绍SaltStack的基本配置和使用,帮助您快速上手。
SaltStack配置管理入门教程:快速上手
2024-02-08

深入理解Node.js中的进程管理

前言 本文主要对 Node.js 中进程管理相关的东西做一个简单介绍,包括 process 对象、child_process 模块和cluster 模块,详细的 API 可以查看官方文档,下面来看看详细的介绍吧。 Process 对象 pr
2022-06-04

ASP.NET Core处理管道的深入理解

前言 在 ASP.NET Core 的管道处理部分,实现思想已经不是传统的面向对象模式,而是切换到了函数式编程模式。这导致代码的逻辑大大简化,但是,对于熟悉面向对象编程,而不是函数式编程思路的开发者来说,是一个比较大的挑战。 处理请求的函数
2022-06-07

全面解析SaltStack:服务器管理的未来

SaltStack 是一种开源的服务器管理工具,它可以帮助您轻松管理大量服务器,它具有强大的功能和灵活的配置,可以满足各种不同的管理需求,SaltStack 已经成为许多企业和组织的首选服务器管理工具。
全面解析SaltStack:服务器管理的未来
2024-02-08

深入探讨JavaScript中的内存管理

内存管理是编程语言的基本能力,JavaScript 中的内存管理是通过 V8 完成的。V8 的实现遵循 ECMA-262 规范,而规范中没有阐述内存布局以及内存管理相关信息,所以它的原理
2023-05-14

深入Android Browser配置管理的详解

Settings是WebView提供给上层App的一个配置Webview的接口,每个WebView都有一个WebSettings,要控制WebView的行为,只能通过WebView.getSettings()获取WebSettings对象的
2022-06-06

洞悉SaltStack:揭秘基础架构管理的利器

SaltStack 是一个功能强大、开源的自动化系统,它可以帮助您轻松地配置和管理您的基础架构环境。本文将介绍 SaltStack 的核心概念、使用方法以及常见问题解答,帮助您快速上手 SaltStack,并充分利用它来简化您的基础架构管理工作。
洞悉SaltStack:揭秘基础架构管理的利器
2024-02-07

Go 包管理机制深入分析

前言随着 Go 语言的深入使用,其依赖管理机制也一直是各位 Gopher 热衷于探讨的话题。Go 语言的源码依赖可通过 go get 命令来获取,但自动化程度不高,于是官方提供了 Dep 这样的自动化批量管理依赖的工具。虽然 Go 语言的依
2023-06-04

深入浅析Java中的Spring事务管理

深入浅析Java中的Spring事务管理?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。环境与版本本文出来之前的一篇文章中的hibernate的相关lib 外Java事务管理之H
2023-05-31

Python深入06——python的内存管理详解

语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征。这里以Python语言为例子,说明一门动态类型的、面向对象的语言的内存管理方式。 对象的内存使用 赋
2022-06-04

深入浅析Java中的Hibernate事务管理

深入浅析Java中的Hibernate事务管理?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。环境与版本hibernate 版本:Hibernate 4.2.2 (下载后的文
2023-05-31

Python深入02 上下文管理器

上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围。一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存)。它的语法形式是with...as...关闭文件
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录