设为首页 收藏本站
查看: 1081|回复: 0

[经验分享] saltstack的深入-管理python-pip

[复制链接]

尚未签到

发表于 2018-8-1 07:20:07 | 显示全部楼层 |阅读模式
操作内容:  
一、基础环境
  
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/attachment.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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-544395-1-1.html 上篇帖子: saltstack的深入-配置zabbix所需的server,web,agent 下篇帖子: Saltstack系列:安装Saltstack
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表