项目作者: alexryabtsev

项目描述 :
Dockerfile to run Ansible in CircleCI
高级语言: Dockerfile
项目地址: git://github.com/alexryabtsev/circleci-ansible.git
创建时间: 2019-11-02T21:54:17Z
项目社区:https://github.com/alexryabtsev/circleci-ansible

开源协议:MIT License

下载


circleci-ansible

Dockerfile to run Ansible in CircleCI.

How to use

  1. Place the next Dockerfile to your provisioning directory:
  1. FROM doomatel/circleci-ansible:3.8.0-2.9.0
  2. ADD --chown=circleci:circleci . /home/circleci
  3. RUN sudo chmod 700 /home/circleci/.ssh && sudo chmod 600 /home/circleci/.ssh/id_rsa*
  1. Add job deploy to your circle.yml with the following config:
  1. version: 2
  2. jobs:
  3. deploy:
  4. docker:
  5. - image: docker:19.03.4-git
  6. steps:
  7. - checkout
  8. - setup_remote_docker
  9. - add_ssh_keys:
  10. name: DEPLOY - Add SSH keys
  11. fingerprints:
  12. - 11:11:11
  13. - 22:22:22
  14. - run:
  15. name: DEPLOY - make directory for SSH keys
  16. command: mkdir /root/project/provisioning/.ssh
  17. - run:
  18. name: DEPLOY - Copy SSH keys
  19. command: |
  20. cp /root/.ssh/id_rsa_111111 /root/project/provisioning/.ssh/id_rsa_develop
  21. cp /root/.ssh/id_rsa_222222 /root/project/provisioning/.ssh/id_rsa_beta
  22. - deploy:
  23. name: DEPLOY - Run deployment
  24. command: |
  25. docker build /root/project/provisioning -t ansible-deploy
  26. docker run --rm ansible-deploy \
  27. ansible-playbook /home/circleci/deploy.yml \
  28. -i /home/circleci/environments/hosts.ini \
  29. -e env=${CIRCLE_BRANCH} \
  30. --key-file=/home/circleci/id_rsa_${CIRCLE_BRANCH}
  • Change 11:11:11 + 111111 and 22:22:22 + 222222to your actual SSH key fingerprints.
  • Change id_rsa_develop & id_rsa_beta to your environments. They should be equal to github branches passed in ${CIRCLE_BRANCH}.

How it works

  1. Checkout code.
  1. - checkout
  1. Setup connection to Docker daemon.
  1. - setup_remote_docker
  1. Load SSH keys from CI.
  1. - add_ssh_keys:
  2. name: DEPLOY - Add SSH keys
  3. fingerprints:
  4. - 11:11:11
  5. - 22:22:22
  1. Copy SSH keys to directory with Ansible playbook (provisioning) to be able to put it into the context of temporary Docker image.
  1. - run:
  2. name: DEPLOY - make directory for SSH keys
  3. command: mkdir /root/project/provisioning/.ssh
  4. - run:
  5. name: DEPLOY - Copy SSH keys
  6. command: |
  7. cp /root/.ssh/id_rsa_111111 /root/project/provisioning/.ssh/id_rsa_develop
  8. cp /root/.ssh/id_rsa_222222 /root/project/provisioning/.ssh/id_rsa_beta
  1. Build temporary Docker image ansible-deploy from doomatel/circleci-ansible image, including SSH keys.
  1. docker build /root/project/provisioning -t ansible-deploy
  1. Run Ansible playbook in one time container based on temporary ansible-deploy Docker image.
  1. docker run --rm ansible-deploy \
  2. ansible-playbook /home/circleci/deploy.yml \
  3. -i /home/circleci/environments/hosts.ini \
  4. -e env=${CIRCLE_BRANCH} \
  5. --key-file=/home/circleci/id_rsa_${CIRCLE_BRANCH}