mirror of https://github.com/certd/certd
				
				
				
			
		
			
				
	
	
		
			141 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
import _ from 'lodash'
 | 
						||
import optionsPrivate from './options.private.js'
 | 
						||
const defaultOptions = {
 | 
						||
  args: {
 | 
						||
    forceCert: false, // 强制更新证书
 | 
						||
    skipCert: false, // 是否跳过证书申请环节
 | 
						||
    forceDeploy: true,
 | 
						||
    test: false
 | 
						||
  },
 | 
						||
  accessProviders: {
 | 
						||
    aliyun: {
 | 
						||
      providerType: 'aliyun',
 | 
						||
      accessKeyId: '',
 | 
						||
      accessKeySecret: ''
 | 
						||
    },
 | 
						||
    dnspod: {
 | 
						||
      providerType: 'dnspod',
 | 
						||
      id: '',
 | 
						||
      token: ''
 | 
						||
    },
 | 
						||
    tencent: {
 | 
						||
      providerType: 'tencent',
 | 
						||
      secretId: '',
 | 
						||
      secretKey: ''
 | 
						||
    },
 | 
						||
    myLinux: {
 | 
						||
      providerType: 'SSH',
 | 
						||
      username: 'xxx',
 | 
						||
      password: 'xxx',
 | 
						||
      host: '1111.com',
 | 
						||
      port: 22,
 | 
						||
      publicKey: ''
 | 
						||
    }
 | 
						||
  },
 | 
						||
  cert: {
 | 
						||
    domains: ['*.docmirror.cn'],
 | 
						||
    email: 'xiaojunnuo@qq.com',
 | 
						||
    dnsProvider: {
 | 
						||
      type:'aliyun',
 | 
						||
      accessProvider:'aliyun'
 | 
						||
    },
 | 
						||
    csrInfo: {
 | 
						||
      country: 'CN',
 | 
						||
      state: 'GuangDong',
 | 
						||
      locality: 'ShengZhen',
 | 
						||
      organization: 'CertD Org.',
 | 
						||
      organizationUnit: 'IT Department',
 | 
						||
      emailAddress: 'xiaojunnuo@qq.com'
 | 
						||
    }
 | 
						||
  },
 | 
						||
  deploy: [
 | 
						||
    {
 | 
						||
      deployName: '流程1-部署到阿里云系列产品',
 | 
						||
      disabled: false,
 | 
						||
      tasks: [
 | 
						||
        {
 | 
						||
          taskName: '上传证书到云',
 | 
						||
          type: 'uploadCertToAliyun',
 | 
						||
          props:{
 | 
						||
            accessProvider: 'aliyun'
 | 
						||
          }
 | 
						||
        },
 | 
						||
        { // CDN、SCDN、DCDN和负载均衡(SLB)
 | 
						||
          taskName: '部署证书到CDN',
 | 
						||
          type: 'deployCertToAliyunCDN',
 | 
						||
          props:{
 | 
						||
            domainName: 'certd-cdn-upload.docmirror.cn',
 | 
						||
            certName: 'certd部署测试(upload)',
 | 
						||
            from: 'upload',
 | 
						||
            accessProvider: 'aliyun'
 | 
						||
          }
 | 
						||
        }
 | 
						||
        // {
 | 
						||
        //   name: '部署证书到阿里云集群Ingress',
 | 
						||
        //   type: 'deployCertToAliyunK8sIngress',
 | 
						||
        //   accessProvider: 'aliyun'
 | 
						||
        // }
 | 
						||
      ]
 | 
						||
    },
 | 
						||
    {
 | 
						||
      deployName: '流程2-部署到nginx服务器',
 | 
						||
      disabled: false,
 | 
						||
      tasks: [
 | 
						||
        {
 | 
						||
          taskName: '上传证书到服务器',
 | 
						||
          type: 'uploadCertToHost',
 | 
						||
          props:{
 | 
						||
            accessProvider: 'aliyun-ssh',
 | 
						||
            crtPath: '/root/certd-test/cert.pem',
 | 
						||
            keyPath: '/root/certd-test/cert.key'
 | 
						||
          }
 | 
						||
        },
 | 
						||
        {
 | 
						||
          taskName: '重启linux',
 | 
						||
          type: 'hostShellExecute',
 | 
						||
          props:{
 | 
						||
            accessProvider: 'aliyun-ssh',
 | 
						||
            script: ['ls']
 | 
						||
          }
 | 
						||
        }
 | 
						||
      ]
 | 
						||
    },
 | 
						||
    {
 | 
						||
      deployName: '流程4-部署到腾讯云ingress',
 | 
						||
      disabled: true,
 | 
						||
      tasks: [
 | 
						||
        {
 | 
						||
          taskName: '上传到腾讯云',
 | 
						||
          type: 'uploadCertToTencent',
 | 
						||
          props:{
 | 
						||
            accessProvider: 'tencent-yonsz'
 | 
						||
          }
 | 
						||
        },
 | 
						||
        {
 | 
						||
          taskName: '部署到TKE-ingress',
 | 
						||
          type: 'deployCertToTencentTKEIngress',
 | 
						||
          props:{
 | 
						||
            clusterId:'cls-6lbj1vee',
 | 
						||
            ingressName:'ingress-base',
 | 
						||
            secretName:'certd-base-yonsz-net-hnuzjrzf',
 | 
						||
            accessProvider: 'tencent-yonsz'
 | 
						||
          }
 | 
						||
        }
 | 
						||
      ]
 | 
						||
    }
 | 
						||
  ]
 | 
						||
}
 | 
						||
 | 
						||
_.merge(defaultOptions, optionsPrivate)
 | 
						||
 | 
						||
export function createOptions(){
 | 
						||
  return  _.cloneDeep(defaultOptions)
 | 
						||
}
 | 
						||
 | 
						||
export function getDnsProviderOptions (options) {
 | 
						||
  if(!options){
 | 
						||
    options = createOptions()
 | 
						||
  }
 | 
						||
  return { accessProviders: options.accessProviders, props: options.cert.dnsProvider }
 | 
						||
}
 |