| LEFT | RIGHT | 
| (no file at all) |  | 
 |    1 #!/usr/bin/env python  | 
 |    2  | 
 |    3 import distutils.spawn | 
 |    4 import io | 
 |    5 import os | 
 |    6 import subprocess | 
 |    7 import sys | 
 |    8  | 
 |    9 if distutils.spawn.find_executable('puppet') \ | 
 |   10     and distutils.spawn.find_executable('hiera'): | 
 |   11   sys.exit(os.EX_OK) | 
 |   12  | 
 |   13 PUPPETLABS_SOURCES = ''' | 
 |   14 deb http://apt.puppetlabs.com precise main | 
 |   15 deb-src http://apt.puppetlabs.com precise main''' | 
 |   16  | 
 |   17 PUPPETLABS_PREFS = ''' | 
 |   18 # Puppetlabs packages (e.g. hiera) would attempt to install a puppet 3.x | 
 |   19 # or later release (which is not available in precise) if not pinned here | 
 |   20 Package: puppet puppet-common | 
 |   21 Pin: version 2.7.11-* | 
 |   22 Pin-Priority: 1000''' | 
 |   23  | 
 |   24 PUPPETLABS_GPG_KEY = ''' | 
 |   25 -----BEGIN PGP PUBLIC KEY BLOCK----- | 
 |   26 Version: GnuPG v1.4.12 (GNU/Linux) | 
 |   27 Comment: GPGTools - http://gpgtools.org | 
 |   28  | 
 |   29 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 | 
 |   83 =a34C | 
 |   84 -----END PGP PUBLIC KEY BLOCK----- | 
 |   85 ''' | 
 |   86  | 
 |   87 add_key_process = subprocess.Popen(['apt-key', 'add', '-'], stdin=subprocess.PIP
     E) | 
 |   88 add_key_process.communicate(PUPPETLABS_GPG_KEY) | 
 |   89  | 
 |   90 with io.open('/etc/apt/sources.list.d/puppetlabs.list', 'wb') as handle: | 
 |   91   handle.write(PUPPETLABS_SOURCES) | 
 |   92  | 
 |   93 with io.open('/etc/apt/preferences.d/puppetlabs', 'wb') as handle: | 
 |   94   handle.write(PUPPETLABS_PREFS) | 
 |   95  | 
 |   96 subprocess.check_call(['apt-get', '-y', 'update']) | 
 |   97 subprocess.check_call(['apt-get', '-y', 'install', 'puppet']) | 
 |   98 subprocess.check_call(['apt-get', '-y', 'install', 'hiera-puppet']) | 
 |   99  | 
 |  100 if not os.path.exists('/etc/puppet/hiera.yaml'): | 
 |  101   config = os.path.join(os.path.dirname(__file__), 'hiera.yaml') | 
 |  102   if os.path.exists(config): | 
 |  103     os.symlink(config, '/etc/puppet/hiera.yaml') | 
| LEFT | RIGHT |