diff --git a/common/deploy-steps-tasks.yaml b/common/deploy-steps-tasks.yaml index 2a5f48a853..d89db3e707 100644 --- a/common/deploy-steps-tasks.yaml +++ b/common/deploy-steps-tasks.yaml @@ -294,6 +294,60 @@ tags: - host_config + ######################################### + # Pre-cache facts for container-puppet.py + ######################################### + + - name: Create puppet caching structures + file: + path: /var/lib/container-puppet/puppetlabs + state: directory + setype: svirt_sandbox_file_t + selevel: s0 + recurse: True + tags: + - container_config + - container_config_tasks + - name: Write facter cache config + copy: + dest: /var/lib/container-puppet/puppetlabs/facter.conf + content: | + facts : { + ttls: [ + { "kernel" : 8 hour }, + { "memory" : 8 hour }, + { "networking" : 8 hour }, + { "operating system" : 8 hour }, + { "processor" : 8 hour }, + ] + } + tags: + - container_config + - container_config_tasks + - name: Cleanup facter cache if exists + file: + path: /opt/puppetlabs/facter + state: absent + ignore_errors: True + tags: + - container_config + - container_config_tasks + - name: Pre-cache facts + command: facter --config /var/lib/container-puppet/puppetlabs/facter.conf + no_log: True + ignore_errors: True + tags: + - container_config + - container_config_tasks + - name: Sync cached facts + synchronize: + src: /opt/puppetlabs/ + dest: /var/lib/container-puppet/puppetlabs/ + delegate_to: "{{ inventory_hostname }}" + tags: + - container_config + - container_config_tasks + ###################################### # Generate config via docker-puppet.py ###################################### diff --git a/docker/docker-puppet.py b/docker/docker-puppet.py index c35189dc39..219dbee07a 100755 --- a/docker/docker-puppet.py +++ b/docker/docker-puppet.py @@ -263,6 +263,16 @@ with open(sh_script, 'w') as script_file: exclude_files+=" --exclude=$p" fi done + + # Exclude read-only mounted directories/files which we do not want + # to copy or delete. + ro_files="/etc/puppetlabs/ /opt/puppetlabs/" + for ro in $ro_files; do + if [ -e "$ro" ]; then + exclude_files+=" --exclude=$ro" + fi + done + rsync -a -R --delay-updates --delete-after $exclude_files $rsync_srcs /var/lib/config-data/${NAME} @@ -342,6 +352,9 @@ def mp_puppet_config((config_volume, puppet_tags, manifest, config_image, volume '--volume', '/etc/pki/tls/certs/ca-bundle.crt:/etc/pki/tls/certs/ca-bundle.crt:ro', '--volume', '/etc/pki/tls/certs/ca-bundle.trust.crt:/etc/pki/tls/certs/ca-bundle.trust.crt:ro', '--volume', '/etc/pki/tls/cert.pem:/etc/pki/tls/cert.pem:ro', + # facter caching + '--volume', '/var/lib/container-puppet/puppetlabs/facter.conf:/etc/puppetlabs/facter/facter.conf:ro', + '--volume', '/var/lib/container-puppet/puppetlabs/:/opt/puppetlabs/:ro', # script injection '--volume', '%s:%s:z' % (sh_script, sh_script) ]