ceph-deploy的calamari命令
2017-11-29 08:56
281 查看
ceph-deploy的calamari主要用于将config文件写到远程host的/etc/salt/minion.d/calamari.conf 文件中并安装salt-minion和diamod 这两个包,并是能salt-minion 这个service 开机自动启动 其源码路径为:E:\ceph-deploy-master\ceph-deploy-master\ceph_deploy\calamari.py 入口函数为: def make(parser): """ Install and configure Calamari nodes. Assumes that a repository with Calamari packages is already configured. Refer to the docs for examples (http://ceph.com/ceph-deploy/docs/conf.html) """ #添加一个自命令,子命令存在subcommand这个字符串中 calamari_parser = parser.add_subparsers(dest='subcommand') calamari_parser.required = True #子命令为connect calamari_connect = calamari_parser.add_parser( 'connect', help='Configure host(s) to connect to Calamari master' ) #添加可选参数master calamari_connect.add_argument( '--master', nargs='?', metavar='MASTER SERVER', help="The domain for the Calamari master server" ) #添加位置参数hosts calamari_connect.add_argument( 'hosts', nargs='+', ) #connect 子命令的处理函数为calamari parser.set_defaults( func=calamari, ) #如果子命令是connect的话,则调用connect函数处理 def calamari(args): if args.subcommand == 'connect': connect(args) def distro_is_supported(distro_name): """ An enforcer of supported distros that can differ from what ceph-deploy supports. """ #目前支持4家发行版 supported = ['centos', 'redhat', 'ubuntu', 'debian'] if distro_name in supported: return True return False def connect(args): for hostname in args.hosts: #得到远端host的代表,后续可以通过distro这个代表直接操作远端hosts distro = hosts.get(hostname, username=args.username) #看远端host的发行版是否支持ceph,目前支持4家发行版 if not distro_is_supported(distro.normalized_name): raise exc.UnsupportedPlatform( distro.distro_name, distro.codename, distro.release ) LOG.info( 'Distro info: %s %s %s', distro.name, distro.release, distro.codename ) LOG.info('assuming that a repository with Calamari packages is already configured.') LOG.info('Refer to the docs for examples (http://ceph.com/ceph-deploy/docs/conf.html)') rlogger = logging.getLogger(hostname) # Emplace minion config prior to installation so that it is present # when the minion first starts. #得到要写入config的远端文件的路径,这个路径为/etc/salt/minion.d/calamari.conf minion_config_dir = os.path.join('/etc/salt/', 'minion.d') minion_config_file = os.path.join(minion_config_dir, 'calamari.conf') rlogger.debug('creating config dir: %s' % minion_config_dir) #通过远端的代表distro在远端新建目录/etc/salt/minion.d/ distro.conn.remote_module.makedir(minion_config_dir, [errno.EEXIST]) rlogger.debug( 'creating the calamari salt config: %s' % minion_config_file ) #通过远端的代表distro在将args.master代表的config写入到远端的/etc/salt/minion.d/calamari.conf文件中 distro.conn.remote_module.write_file( minion_config_file, ('master: %s\n' % args.master).encode('utf-8') ) #通过远端的代表distro在远端安装salt-minion和diamod distro.packager.install('salt-minion') distro.packager.install('diamond') #如果远端机器是redhat和centos 需要是遏制chkconfig让salt-minion 使能,并通过service 命令启动 这个service,这两部也是通过远端代表distro直接在远端执行命令 # redhat/centos need to get the service started if distro.normalized_name in ['redhat', 'centos']: remoto.process.run( distro.conn, ['chkconfig', 'salt-minion', 'on'] ) remoto.process.run( distro.conn, ['service', 'salt-minion', 'start'] ) #退出连接的远端 distro.conn.exit()
相关文章推荐
- ceph-deploy的admin 命令
- ceph-deploy的pkg命令
- ceph-deploy的rgw命令
- 使用ceph-deploy部署ceph命令解析
- ceph-deploy mon create-initial 命令
- ceph-deploy mon create命令
- 【Ceph】ceph-deploy命令详解
- ceph-deploy gatherkeys命令
- ceph rbd 通过iscsi tgt共享 查看和命令手动操作
- Ceph管理平台Calamari的架构与功能分析
- ceph-deploy源码分析(二)——new模块 <转>
- Ceph快速安装:Ceph-deploy 在Ubuntu 14.04 Server上部署三节点安装
- 不使用ceph-deploy 手动安装两个节点的Ceph集群
- install ceph by ceph-deploy
- ceph存储 Linux远程操作(rcp/rsh)命令实战
- maven命令学习-发布上传jar包-deploy
- centos7 ceph-deploy 安装jewel
- ceph中rados/rbd命令无法使用
- ceph 监控--calamari
- 在ceph 的admin-node安装calamari详细步骤