読者です 読者をやめる 読者になる 読者になる

Ansistranoでソースコードをローカルで取得

Python

アプリのデプロイにRubyCapistranoを使っていて便利だなーと思っていたので、
新しく作ったアプリでは、AnsibleのAnsistranoを使ってみた。

でも、実行すると途中で止まる。
ansible-playbook -i inventory/hosts/production playbook/deploy.yml
gitリポジトリからソースの取得するときに、デプロイ先のサーバーからgit cloneしてるっぽい。

TASK [carlosbuenosvinos.ansistrano-deploy : include] ***************************
included: /private/etc/ansible/roles/carlosbuenosvinos.ansistrano-deploy/tasks/update-code/git.yml for xx.xx.xx.xx

TASK [carlosbuenosvinos.ansistrano-deploy : ANSISTRANO | GIT | Ensure GIT deployment key is up to date] ***
skipping: [xx.xx.xx.xx]

TASK [carlosbuenosvinos.ansistrano-deploy : ANSISTRANO | GIT | Update remote repository] ***

デプロイ先のサーバーで、gitのリポジトリを取得できるように設定すれば動くけど、
ローカル環境でリポジトリを取得したかったので、調べてみた。

ansistrano_deploy_via: git
から ansistrano_deploy_via: copy
にすると、動くようになった、
と思ったけど、これはgit cloneではなくて単なるファイルコピーをするオプションだった。
ansistrano_deploy_from も足すとローカルのファイルをコピーする。
copyで実行したら遅すぎたので、rsyncに変えたら早くなった。

- hosts: all
  name: "appname1 host server"
  vars:
    ansistrano_deploy_from: "{{ playbook_dir }}/../../"
    ansistrano_deploy_to: /var/www/mmr2
    ansistrano_deploy_via: rsync
    #ansistrano_deploy_via: git
    ansistrano_git_repo: git@gogs.companyname.test:appname1/appname1.git
    ansistrano_git_branch: feature/1.1
    ansistrano_shared_paths: ["log","config"]
    ansistrano_after_update_code_tasks_file: "{{ playbook_dir }}/ansistrano/after_update_code.yml"
    ansistrano_after_symlink_tasks_file: "{{ playbook_dir }}/ansistrano/after_symlink.yml"
  vars_files:
    - vars/all/main.yml
    # - vars/{{ stage }}/main.yml
    # - vars/{{ stage }}/secret.yml
  roles:
    - carlosbuenosvinos.ansistrano-deploy