s3_registry.yml 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. ---
  2. # This playbook creates an S3 bucket named after your cluster and configures the docker-registry service to use the bucket as its backend storage.
  3. # Usage:
  4. # ansible-playbook s3_registry.yml -e clusterid="mycluster" -e aws_bucket="clusterid-docker" -e aws_region="us-east-1"
  5. #
  6. # The AWS access/secret keys should be the keys of a separate user (not your main user), containing only the necessary S3 access role.
  7. # The 'clusterid' is the short name of your cluster.
  8. - hosts: tag_clusterid_{{ clusterid }}:&tag_host-type_openshift-master
  9. remote_user: root
  10. gather_facts: False
  11. vars:
  12. aws_access_key: "{{ lookup('env', 'S3_ACCESS_KEY_ID') }}"
  13. aws_secret_key: "{{ lookup('env', 'S3_SECRET_ACCESS_KEY') }}"
  14. aws_bucket_name: "{{ aws_bucket | default(clusterid ~ '-docker') }}"
  15. aws_bucket_region: "{{ aws_region | default(lookup('env', 'S3_REGION') | default('us-east-1', true)) }}"
  16. tasks:
  17. - name: Check for AWS creds
  18. fail:
  19. msg: "Couldn't find {{ item }} creds in ENV"
  20. when: "{{ item }} == ''"
  21. with_items:
  22. - aws_access_key
  23. - aws_secret_key
  24. - name: Scale down registry
  25. command: oc scale --replicas=0 dc/docker-registry
  26. - name: Create S3 bucket
  27. local_action:
  28. module: s3 bucket="{{ aws_bucket_name }}" mode=create
  29. - name: Set up registry environment variable
  30. command: oc env dc/docker-registry REGISTRY_CONFIGURATION_PATH=/etc/registryconfig/config.yml
  31. - name: Generate docker registry config
  32. template: src="s3_registry.j2" dest="/root/config.yml" owner=root mode=0600
  33. - name: Determine if new secrets are needed
  34. command: oc get secrets
  35. register: secrets
  36. - name: Create registry secrets
  37. command: oc secrets new dockerregistry /root/config.yml
  38. when: "'dockerregistry' not in secrets.stdout"
  39. - name: Determine if service account contains secrets
  40. command: oc describe serviceaccount/registry
  41. register: serviceaccount
  42. - name: Add secrets to registry service account
  43. command: oc secrets add serviceaccount/registry secrets/dockerregistry
  44. when: "'dockerregistry' not in serviceaccount.stdout"
  45. - name: Determine if deployment config contains secrets
  46. command: oc volume dc/docker-registry --list
  47. register: dc
  48. - name: Add secrets to registry deployment config
  49. command: oc volume dc/docker-registry --add --name=dockersecrets -m /etc/registryconfig --type=secret --secret-name=dockerregistry
  50. when: "'dockersecrets' not in dc.stdout"
  51. - name: Wait for deployment config to take effect before scaling up
  52. pause: seconds=30
  53. - name: Scale up registry
  54. command: oc scale --replicas=1 dc/docker-registry
  55. - name: Delete temporary config file
  56. file: path=/root/config.yml state=absent