如何使用Ansible获取Github的私有存储库
在使用基础架构即代码(IaC)、Terraform和Ansible实现网络和实例自动构建的云端环境中,需要获取GitHub私有仓库的代码,并通过以下方法实现。希望对大家有所帮助。
这是最终版本的要点。
前提条件 tí
以下内容已安装完成
-
- Ansible 2.7.7
- Git 1.2.20
考察环境
-
- Debian 10 (GCEのVMインスタンス)
- Mac
获取 Github Access Token
-
- 设置 -> 开发者设置 -> 个人访问令牌 -> 移动
-
- 通过生成新令牌来创建新键
- 将显示的访问令牌记录下来。该令牌仅在创建后立即显示一次。如果忘记记录,请重新生成。
使用ansible-pull来获取
最终版本的要点在这里。虽然有两个文件,但在这里我们将详细解释代码。
ansible-pull -e 'ansible_python_interpreter=/usr/bin/python3' \
-U https://<上記で取得したGithub Access Token>:x-oauth-basic@github.com/<組織名>/<プライベートリポジトリ名> \
-d /tmp/<プライベートリポジトリ名> ./local.yml
ansible_python_interpreterですが、環境によってPythonがインストールされるディレクトリが異なるかと思います。Ansibleはデフォルトだと/usr/bin/phthonを見に行ってしまうので、何も指定しないと、実行時にエラーが表示されることがあります。必要であればこのように利用するバイナリの場所を指定してあげます。
Github Access Tokenを指定する部分は、セキュリティ的によろしくないので、直にトークンを書き込むのではなく、環境変数などに詰めて渡してください。
組織名のところですが、組織でない場合、ここは個人名でもいけるのかは試していません。
-d /tmp/<プライベートリポジトリ名>の部分は、出力先の任意のディレクトリを指定してあげてください。上の例では便宜上、tmpディレクトリの下に展開しているだけです。
---
- hosts: all
vars:
ansible_python_interpreter: /usr/bin/python3
become: true
become_method: sudo
ansible-pullは何かしらAnsibleのプレイブックが必要なので、ここではダミーとしてlocal.ymlを渡しています。中身は何も実行しないのであればどんな記述でも構いません。
给你一份额外的东西
如果要在Ansible和Terraform中使用上述代码,我认为需要将值设置为环境变量。以下是获取方法的参考备忘录。
在Ansible中获取环境变量的方法是什么?
如果ansible_env中有设定的值,就可以取得。例如,如果设置了环境变量image_id,则可以通过ansible_env.image_id进行获取。
官方资料: 模块索引
获取环境变量的Terraform方法
如果设置TF_VAR_名称,比如TF_VAR_image_id,那么可以将其作为环境变量,在*.tf文件中通过var.image_id获得。官方文档:环境变量的设置方法。