王亿万 2021-06-17 16:20 采纳率: 0%
浏览 20

salt执行highstate的时候报错。

 Passed invalid arguments to state.highstate: 'bool' object is not iterable
    
        Retrieve the state data from the salt master for this minion and execute it
    
        test
            Run states in test-only (dry-run) mode
    
        pillar
            Custom Pillar values, passed as a dictionary of key-value pairs
    
            .. code-block:: bash
    
                salt '*' state.highstate stuff pillar='{"foo": "bar"}'
    
            .. note::
                Values passed this way will override Pillar values set via
                ``pillar_roots`` or an external Pillar source.
    
            .. versionchanged:: 2016.3.0
                GPG-encrypted CLI Pillar data is now supported via the GPG
                renderer. See :ref:`here <encrypted-cli-pillar-data>` for details.
    
        pillar_enc
            Specify which renderer to use to decrypt encrypted data located within
            the ``pillar`` value. Currently, only ``gpg`` is supported.

 

下面是代码!!!!

#!py
#coding: utf-8
import subprocess

class MY_ERROR(Exception):
  def __init__(self,value):
    self.value=value
  def __str__(self):
    return self.value
#pillar 常用软件安装 
def mysql():
  mysql_sls_path='centos.public_services.mysql.'
  required_keys=['version','port']
  if __pillar__.has_key('mysql'):
    mysql_d=__pillar__['mysql']
    port=__pillar__['mysql']['port']
    for key in required_keys:
      if not mysql_d.has_key(key) or str(mysql_d[key]).strip()=="":
        raise MY_ERROR('key error! key: %s'%(str(key)))
    if not port or not 1024<int(port)<65535:
      raise MY_ERROR('mysql port value error: %s'%(str(mysql_d['port'])))
    cfg=mysql_sls_path+str(mysql_d['version'][0])
    return cfg
  return None

def nginx():
  nginx_sls_path='centos.public_services.nginx.'
  required_keys=['version']
  if __pillar__.has_key('nginx'):
    nginx_d=__pillar__['nginx']
    for key in required_keys:
      if not nginx_d.has_key(key) or str(nginx_d[key]).strip()=="":
        raise MY_ERROR('key error! key: %s'%(str(key)))
    cfg=nginx_sls_path
    return cfg
  return None

def phpfpm():
  phpfpm_sls_path='centos.public_services.phpfpm.'
  required_keys=['version']
  if __pillar__.has_key('phpfpm'):
    phpfpm_d=__pillar__['phpfpm']
    for key in required_keys:
      if not phpfpm_d.has_key(key) or str(phpfpm_d[key]).strip()=="":
        raise MY_ERROR('key error! key: %s'%(str(key)))
    cfg=phpfpm_sls_path
    return cfg
  return None

def java():
  java_sls_path='centos.public_services.java.'
  required_keys=['version']
  if __pillar__.has_key('java'):
    java_d=__pillar__['java']
    for key in required_keys:
      if not java_d.has_key(key) or str(java_d[key]).strip()=="":
        raise MY_ERROR('key error! key: %s'%(str(key)))
    cfg=java_sls_path
    return cfg
  return None

def tomcat():
  tomcat_sls_path='centos.public_services.tomcat.'
  required_keys=['version']
  if __pillar__.has_key('tomcat'):
    tomcat_d=__pillar__['tomcat']
    for key in required_keys:
      if not tomcat_d.has_key(key) or str(tomcat_d[key]).strip()=="":
        raise MY_ERROR('key error! key: %s'%(str(key)))
    cfg=tomcat_sls_path
    return cfg
  return None

def base_install():
  base_sls_path='centos.public_services.base_install.'
  required_keys=['version']
  if __pillar__.has_key('base_install'):
    base_d=__pillar__['base_install']
    for key in required_keys:
      if not base_d.has_key(key) or str(base_d[key]).strip()=="":
        raise MY_ERROR('key error! key: %s'%(str(key)))
    cfg=base_sls_path
    return cfg
  return None

def response_url():
  response_url_sls_path='centos.public_services.response_url.'
  required_keys=['url']
  if __pillar__.has_key('response_url'):
    response_url_d=__pillar__['response_url']
    for key in required_keys:
      if not response_url_d.has_key(key) or str(response_url_d[key]).strip()=="":
        raise MY_ERROR('key error! key: %s'%(str(key)))
    cfg=response_url_sls_path
    return cfg
  return None

def System_change_time():
  System_change_time_sls_path='centos.public_services.changetime.'
  required_keys=['totime']
  if __pillar__.has_key('System_change_time'):
    System_change_time_d=__pillar__['System_change_time']
    for key in required_keys:
      if not System_change_time_d.has_key(key) or str(System_change_time_d[key]).strip()=="":
        raise MY_ERROR('key error! key: %s'%(str(key)))
    cfg=System_change_time_sls_path
    return cfg
  return None

def redis():
  redis_sls_path='centos.public_services.redis.'
  required_keys=['version']
  if __pillar__.has_key('redis'):
    redis_d=__pillar__['redis']
    for key in required_keys:
      if not redis_d.has_key(key) or str(redis_d[key]).strip()=="":
        raise MY_ERROR('key error! key: %s'%(str(key)))
    cfg=redis_sls_path
    return cfg
  return None

def run():
  config={}
  config['include']=[]
  mysql_cfg=mysql()
  if mysql_cfg:
    config['include'].append(mysql_cfg)
  nginx_cfg=nginx()
  if nginx_cfg:
    config['include'].append(nginx_cfg)
  php_cfg=phpfpm()
  if php_cfg:
    config['include'].append(php_cfg)
  java_cfg=java()
  if java_cfg:
    config['include'].append(java_cfg)
  tomcat_cfg=tomcat()
  if tomcat_cfg:
    config['include'].append(tomcat_cfg)
  base_cfg=base_install()
  if base_cfg:
    config['include'].append(base_cfg)
  response_cfg=response_url()
  if response_cfg:
    config['include'].append(response_cfg)
  System_change_time_cfg=System_change_time()
  if System_change_time_cfg:
    config['include'].append(System_change_time_cfg)
  redis_cfg=redis()
  if redis_cfg:
    config['include'].append(redis_cfg)
  if config['include']==[]:
    return {}
  return config

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-06-21 17:12
    关注

    你好,我是有问必答小助手。为了技术专家团更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关代码图片或者报错信息。便于技术专家团更好地理解问题,并给出解决方案。

    您可以点击问题下方的【编辑】,进行补充修改问题。

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮