salt openstack生成随机字符串
2015-06-08 17:03
381 查看
用到python中的string、random模块;介绍下string模块的3个函数,看输出结果就懂了
参考链接:/article/4256999.html
本文出自 “the-way-to-cloud” 博客,请务必保留此出处http://iceyao.blog.51cto.com/9426658/1659765
[root@saltstack-ui ~]# python Python 2.7.5 (default, Jun 17 2014, 18:11:42) [GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import string >>> string.letters 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> string.digits '0123456789' >>> string.printable '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c' # 生成salt部署openstack组件的随机密码字符串 [root@pxe ~]# cat utils/gen_random_openstack_password.py #!/usr/bin/env python # -*- coding: utf-8 -*- # description: generate a set of random charactor for openstack component import random import string from jinja2 import Environment,FileSystemLoader env = Environment(loader=FileSystemLoader('/root/utils/sls')) length = 16 openstack_sls_dir = '/srv/openstack-deploy/pillar/dev/openstack/' base_sls_dir = '/srv/openstack-deploy/pillar/dev/ha/' def gen_password(length): # chars=string.ascii_letters+string.digits+'!$%^&*' chars=string.ascii_letters+string.digits return ''.join([random.choice(chars) for i in range(length)]) def create_openstack_sls(config_name,content): try: fp = open(config_name,'w') fp.write(content) except IOError: print "Error: can\'t find file or read data" else: fp.close() def create_openstack_sls_dict(component): sls_dict = {} if component == 'keystone': sls_dict = dict(zip( ['MYSQL_KEYSTONE_PASS','ADMIN_TOKEN','ADMIN_PASS'], [gen_password(length) for i in xrange(3)])) elif component == 'glance': sls_dict = dict(zip( ['MYSQL_GLANCE_PASS','AUTH_ADMIN_GLANCE_PASS'], [gen_password(length) for i in xrange(3)])) elif component == 'nova': sls_dict = dict(zip( ['MYSQL_NOVA_PASS','AUTH_ADMIN_NOVA_PASS','METADATA_PROXY_SECRET'], [gen_password(length) for i in xrange(3)])) elif component == 'neutron': sls_dict = dict(zip( ['MYSQL_NEUTRON_PASS','AUTH_ADMIN_NEUTRON_PASS'], [gen_password(length) for i in xrange(3)])) elif component == 'cinder': sls_dict = dict(zip( ['MYSQL_CINDER_PASS','AUTH_ADMIN_CINDER_PASS'], [gen_password(length) for i in xrange(3)])) elif component == 'ceilometer': sls_dict = dict(zip( ['MONGODB_CEILOMETER_PASS','AUTH_ADMIN_CEILOMETER_PASS','METERING_SECRET'], [gen_password(length) for i in xrange(3)])) elif component == 'heat': sls_dict = dict(zip( ['MYSQL_HEAT_PASS','AUTH_ADMIN_HEAT_PASS'], [gen_password(length) for i in xrange(3)])) elif component == 'mariadb': sls_dict = dict(zip( ['SST_PASS'], [gen_password(length) for i in xrange(3)])) elif component == 'rabbitmq': sls_dict = dict(zip( ['RABBIT_PASS'], [gen_password(length) for i in xrange(3)])) return sls_dict def execute_gen_sls(sls_dir,*args): for component in args: sls_template = env.get_template(component +".sls.template") sls_content = sls_template.render(create_openstack_sls_dict(component)) create_openstack_sls(sls_dir+component+'.sls',sls_content) if __name__=="__main__": openstack_component = [ 'keystone','glance','nova', 'neutron','cinder','ceilometer','heat' ] base_component = [ 'rabbitmq', 'mariadb' ] execute_gen_sls(openstack_sls_dir,*openstack_component) execute_gen_sls(base_sls_dir,*base_component)
参考链接:/article/4256999.html
本文出自 “the-way-to-cloud” 博客,请务必保留此出处http://iceyao.blog.51cto.com/9426658/1659765
相关文章推荐
- linux程序设计——linux环境(第四章)
- linux shell 字符串操作(长度,查找,替换)详解
- WPF DragDrop事件元素跟随
- linux mail利用外部邮箱地址发邮件
- top-命令详解
- copy语法
- log4j.properties 的使用详解
- 阿里云ECS服务器配置ubuntu安装openfire服务器
- JFinal源码走读_3_ActiveRecord初始化
- linux如何安装jdk和配置TOMCAT
- Linux操作命令(一)
- 【云快讯】之四十八《IBM和Cisco最新收购,加强Openstack易用能力》
- 【云快讯】之四十八《IBM和Cisco最新收购,加强Openstack易用能力》
- linux系统的休眠与唤醒简介
- OpenGL超级宝典第5版&&GLSL法线变换
- linux下jdk安装。
- tomcat做文件服务器
- Tomcat,Weblogic,WebSphere,JBoss四种服务器简单对比
- centos rm文件删除恢复
- OpenGL超级宝典第5版&&缓冲区