(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(X) (DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_Equals '=')} {(X)} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:18)
            )
          ]
          action: [
            (C {(echo)} {(DQ (' ** one argument required (environment name)'))})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:30)
              arg_word: {(-1)}
            )
          ]
          spids: [4 20]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} 
                  {(environments/) ($ Id.VSub_Number '$1') (.json)} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:50)
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ (' ** must create environments/') ($ Id.VSub_Number '$1') ('.json first...'))}
            )
            (C {(echo)} 
              {
                (DQ ("    (try 'cp environments/Test-Laptop.json environments/") 
                  ($ Id.VSub_Number '$1') (".json' and editing)")
                )
              }
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:73)
              arg_word: {(-1)}
            )
          ]
          spids: [37 52]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-f)} {(data_bags/configs/) ($ Id.VSub_Number '$1') (.json)} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:91)
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ (' ** file data_bags/configs/') ($ Id.VSub_Number '$1') ('.json already exists'))}
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:105)
              arg_word: {(-1)}
            )
          ]
          spids: [80 93]
        )
      ]
    )
    (C {(./make_secret.sh)})
    (command.Pipeline
      children: [
        (command.Simple
          words: [{(erubis)} {(-c)} {(DQ ("context['environ']='") ($ Id.VSub_Number '$1') ("'"))}]
          redirects: [
            (redir.HereDoc
              op: (Token id:Id.Redir_DLess val:'<<' span_id:125)
              fd: -1
              here_begin: {(EOH)}
              here_end_span_id: 1101
              stdin_parts: [
                ('<%\n')
                ("require 'openssl'\n")
                ("require 'json'\n")
                ("require 'net/ssh'\n")
                ("require 'erubis'\n")
                ('\n')
                ('JSON.create_id = nil\n')
                ('node = JSON.parse(IO.read(')
                (Id.Right_DoubleQuote '"')
                ('environments/#{@environ}.json')
                (Id.Right_DoubleQuote '"')
                ("))['override_attributes']\n")
                ("node['bcpc']['region_name'] = @environ\n")
                ('\n')
                ("load 'cookbooks/bcpc/libraries/utils.rb'\n")
                ('\n')
                ('ssl_conf = Erubis::Eruby.new(IO.read(')
                (Id.Right_DoubleQuote '"')
                (cookbooks/bcpc/templates/default/openssl.cnf.erb)
                (Id.Right_DoubleQuote '"')
                (')).result(:node=>node)\n')
                ('File.open(')
                (Id.Right_DoubleQuote '"')
                (/tmp/openssl.cnf)
                (Id.Right_DoubleQuote '"')
                (", 'w') {|f| f.write(ssl_conf)}\n")
                ('%>\n')
                ('{\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (id)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ("#{node['bcpc']['region_name']}")
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (ceilometer-secret)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (ceph-fs-uuid)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{%x[uuidgen].strip.downcase}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (ceph-mon-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{ceph_keygen}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (contrail-api-passwd)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (contrail-control-passwd)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (contrail-dns-passwd)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (contrail-metadata-secret)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (contrail-schema-passwd)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (contrail-svc-monitor-passwd)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (glance-cloudpipe-uuid)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{%x[uuidgen].strip.downcase}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (graphite-secret-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (haproxy-stats-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (haproxy-stats-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (haproxy)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (horizon-secret-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (keepalived-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (keepalived-router-id)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{(rand * 1000).to_i%254/2*2+1}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (keystone-admin-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (keystone-admin-token)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (keystone-admin-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (admin)
                (Id.Right_DoubleQuote '"')
                (',\n')
                (
'    <% temp = %x[openssl req -new -x509 -passout pass:temp_passwd -newkey rsa:2048 -out /dev/stdout -keyout /dev/stdout -days 1095 -subj '
                )
                (Id.Right_DoubleQuote '"')
                (
"/C=#{node['bcpc']['country']}/ST=#{node['bcpc']['state']}/L=#{node['bcpc']['location']}/O=#{node['bcpc']['organization']}/OU=#{node['bcpc']['region_name']}/CN=keystone.#{node['bcpc']['cluster_domain']}/emailAddress=#{node['bcpc']['admin_email']}"
                )
                (Id.Right_DoubleQuote '"')
                ('] %>\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (keystone-pki-certificate)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{%x[echo ')
                (Id.Right_DoubleQuote '"')
                ('#{temp}')
                (Id.Right_DoubleQuote '"')
                (' | openssl x509].gsub(/')
                (Id.Lit_Other '\\')
                ("n/,'")
                (Id.Lit_Other '\\')
                ("n')}")
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (keystone-pki-private-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{%x[echo ')
                (Id.Right_DoubleQuote '"')
                ('#{temp}')
                (Id.Right_DoubleQuote '"')
                (' | openssl rsa -passin pass:temp_passwd -out /dev/stdout].gsub(/')
                (Id.Lit_Other '\\')
                ("n/,'")
                (Id.Lit_Other '\\')
                ("n')}")
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (keystone-test-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (keystone-test-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (tester)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (libvirt-secret-uuid)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{%x[uuidgen].strip.downcase}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-ceilometer-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-ceilometer-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (ceilometer)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-check-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-check-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (check)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-cinder-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-cinder-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (cinder)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-galera-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-galera-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (sst)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-glance-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-glance-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (glance)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-graphite-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-graphite-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (graphite)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-heat-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-heat-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (heat)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-horizon-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-horizon-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (horizon)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-keystone-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-keystone-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (keystone)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-neutron-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-neutron-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (neutron)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-nova-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-nova-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (nova)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-pdns-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-pdns-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (pdns)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-root-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-root-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (root)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-zabbix-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (mysql-zabbix-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (zabbix)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (rabbitmq-cookie)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (rabbitmq-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (rabbitmq-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (guest)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (radosgw-admin-access-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password_alphanum_upper}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (radosgw-admin-secret-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password(40)}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (radosgw-admin-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (radosgw)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (radosgw-test-access-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password_alphanum_upper}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (radosgw-test-secret-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password(40)}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (radosgw-test-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (tester)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    <% key = OpenSSL::PKey::RSA.new 2048; pubkey = ')
                (Id.Right_DoubleQuote '"')
                ("#{key.ssh_type} #{[ key.to_blob ].pack('m0')}")
                (Id.Right_DoubleQuote '"')
                (' %>\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (ssh-nova-private-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{key.to_pem.gsub(/')
                (Id.Lit_Other '\\')
                ("n/,'")
                (Id.Lit_Other '\\')
                ("n')}")
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (ssh-nova-public-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{pubkey.gsub(/')
                (Id.Lit_Other '\\')
                ("n/,'')}")
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    <% key = OpenSSL::PKey::RSA.new 2048; pubkey = ')
                (Id.Right_DoubleQuote '"')
                ("#{key.ssh_type} #{[ key.to_blob ].pack('m0')}")
                (Id.Right_DoubleQuote '"')
                (' %>\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (ssh-private-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{key.to_pem.gsub(/')
                (Id.Lit_Other '\\')
                ("n/,'")
                (Id.Lit_Other '\\')
                ("n')}")
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (ssh-public-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{pubkey.gsub(/')
                (Id.Lit_Other '\\')
                ("n/,'')}")
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                (
'    <% temp = %x[openssl req -config /tmp/openssl.cnf -extensions v3_req -new -x509 -passout pass:temp_passwd -newkey rsa:4096 -out /dev/stdout -keyout /dev/stdout -days 1095 -subj '
                )
                (Id.Right_DoubleQuote '"')
                (
"/C=#{node['bcpc']['country']}/ST=#{node['bcpc']['state']}/L=#{node['bcpc']['location']}/O=#{node['bcpc']['organization']}/OU=#{node['bcpc']['region_name']}/CN=openstack.#{node['bcpc']['cluster_domain']}/emailAddress=#{node['bcpc']['admin_email']}"
                )
                (Id.Right_DoubleQuote '"')
                ('] %>\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (ssl-certificate)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{%x[echo ')
                (Id.Right_DoubleQuote '"')
                ('#{temp}')
                (Id.Right_DoubleQuote '"')
                (' | openssl x509].gsub(/')
                (Id.Lit_Other '\\')
                ("n/,'")
                (Id.Lit_Other '\\')
                ("n')}")
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (ssl-private-key)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{%x[echo ')
                (Id.Right_DoubleQuote '"')
                ('#{temp}')
                (Id.Right_DoubleQuote '"')
                (' | openssl rsa -passin pass:temp_passwd -out /dev/stdout].gsub(/')
                (Id.Lit_Other '\\')
                ("n/,'")
                (Id.Lit_Other '\\')
                ("n')}")
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (zabbix-admin-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (zabbix-admin-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (admin)
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (zabbix-guest-password)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                ('<%=')
                (Id.Right_DoubleQuote '"')
                ('#{secure_password}')
                (Id.Right_DoubleQuote '"')
                ('%>')
                (Id.Right_DoubleQuote '"')
                (',\n')
                ('    ')
                (Id.Right_DoubleQuote '"')
                (zabbix-guest-user)
                (Id.Right_DoubleQuote '"')
                (': ')
                (Id.Right_DoubleQuote '"')
                (guest)
                (Id.Right_DoubleQuote '"')
                ('\n')
                ('}\n')
              ]
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'2>' span_id:128)
              fd: 2
              arg_word: {(/dev/null)}
            )
          ]
        )
        (C {(knife)} {(solo)} {(data)} {(bag)} {(create)} {(configs)} {($ Id.VSub_Number '$1')} 
          {(--json-file)} {(/dev/stdin)} {(--data-bag-path)} {(data_bags)} {(--secret-file)} {(secret_file)}
        )
      ]
      negated: F
    )
    (command.Pipeline
      children: [
        (C {(cat)} {(data_bags/configs/) ($ Id.VSub_Number '$1') (.json)})
        (command.Simple
          words: [{(python)} {(-mjson.tool)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:1115)
              fd: -1
              arg_word: {(data_bags/configs/) ($ Id.VSub_Number '$1') (.json.new)}
            )
          ]
        )
      ]
      negated: F
    )
    (C {(mv)} {(-f)} {(data_bags/configs/) ($ Id.VSub_Number '$1') (.json.new)} 
      {(data_bags/configs/) ($ Id.VSub_Number '$1') (.json)}
    )
    (C {(echo)} {(DQ (' ** created data_bags/configs/') ($ Id.VSub_Number '$1') (.json))})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} {(id_rsa)} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:1153)
            )
          ]
          action: [
            (C {(touch)} {(id_rsa)})
            (C {(chmod)} {(600)} {(id_rsa)})
            (command.Simple
              words: [{(erubis)}]
              redirects: [
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:1172)
                  fd: -1
                  here_begin: {(EOH)}
                  here_end_span_id: 1195
                  stdin_parts: [
                    ('<%\n')
                    ("require 'json'\n")
                    ('JSON.create_id = nil\n')
                    ('bag = JSON.parse(%x[knife solo data bag show configs ')
                    ($ Id.VSub_Number '$1')
                    (' --data-bag-path data_bags --secret-file secret_file -fjson])\n')
                    ('%>\n')
                    ('<%=')
                    (Id.Right_DoubleQuote '"')
                    ("#{bag['ssh-private-key']}")
                    (Id.Right_DoubleQuote '"')
                    ('%>\n')
                  ]
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'2>' span_id:1175)
                  fd: 2
                  arg_word: {(/dev/null)}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:1178)
                  fd: -1
                  arg_word: {(id_rsa)}
                )
              ]
            )
            (C {(echo)} {(DQ (' ** created ./id_rsa with ssh key for BCPC nodes'))})
          ]
          spids: [1142 1155]
        )
      ]
    )
  ]
)