Ansibleに関するエラーを解消する
目次
最近遭遇したエラーについて簡単に解消方法を提示します。小さいトピックなので2つのエラーについてまとめていっきに書いてみます。
- HomebrewでインストールしたAnsibleのtmpディレクトリの所有者がrootになってしまう。
- Python2ベースのAnsibleでAWSのクレデンシャルを通常のものからロール形式に変えたらデプロイエラーが出るようになった。
HomebrewでインストールしたAnsibleのtmpディレクトリの所有者がrootになってしまう。
brew install ansible の後、基本的なansibleのコマンド(ansible –versionなど)を実行しないで、いきなりansible-playbook系のコマンドを実行したら、上記の現象が発生しました。
$ sudo ls -ltra /Users/koji/.ansible
drwx------ 2 root staff 64 1 3 19:16 tmp
同じ現象で悩んでいる人を見つけましたが、解決したのかどうかいまいち分かりません。
https://stackoverflow.com/questions/59833734/ansible-version-command-throws-an-error
そこで、もうWeb検索には頼らず、tmpディレクトリの所有者がkoji(自身のユーザー)になる手順を探ることにしました。
まずはansibleを一度まっさらにしたいので、アンインストールします。
$ brew uninstall ansible
個人のansible設定も全て消しておきます。(tmpの上位ディレクトリをまるまる消す。)root所有のディレクトリを消すので、sudoを付けます。
$ sudo rm -rf /Users/koji/.ansible
そして、色々試した結果、再度インストールした後、すぐにversionコマンドを打てば問題を解決できることが分かったということでひと段落しました。
$ brew install ansible
$ ansible --version
$ ls -ltra /Users/koji/.ansible
drwxrwxr-- 2 koji staff 64 1 3 19:16 tmp
Homebrewでインストールした後は、ユーザー配下の設定関連ディレクトリの所有者や権限をチェックする癖をつけた方が良さそうですね。
解決してからエラーの内容を読めば、素直にエラーを出してくれているのですが、ちょっとイレギュラーなケースで辛い現象ですね;;
Python2ベースのAnsibleでAWSのクレデンシャルを標準のものからロール形式に変えたらデプロイエラーが出るようになった。
標準のクレデンシャルの書き方(/Users/koji/.aws/credencials)
[my-project]
aws_access_key_id = AAAAAAAAAAAAAAAA
aws_secret_access_key = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
ロール形式の書き方(/Users/koji/.aws/credencials)
[koji]
aws_access_key_id = AAAAAAAAAAAAAAAA
aws_secret_access_key = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
[my-project]
role_arn = arn:aws:iam::111111000000:role/iam-my-pjt-role
region = us-east-1
source_profile = koji
公式のページを見つけられていないのですが、ロール形式は非サポートなのかもしれません。
結論を書いてしまいますが、Python2ベースからPython3ベースのansibleにアップデートすることで解決しました。特にansibleのymlファイルを修正する必要はなかったので、ある程度互換性を持っているようです。
アップデート方法を一応載せておきます。
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
sudo update-alternatives --set python /usr/bin/python3.6
sudo pip install ansible boto3
ちなみに標準のクレデンシャルですと以下のようなエラーが出ます。
File "/usr/local/lib/python2.7/dist-packages/boto/sts/__init__.py", line 51, in
connect_to_region **kw_params)
File "/usr/local/lib/python2.7/dist-packages/boto/regioninfo.py", line 220, in connect
return region.connect(**kw_params)
File "/usr/local/lib/python2.7/dist-packages/boto/regioninfo.py", line 290, in connect
return self.connection_cls(region=self, **kw_params)
File "/usr/local/lib/python2.7/dist-packages/boto/sts/connection.py",
line 107, in __init__ provider=provider)
File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1100, in
__init__ provider=provider) File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 555, in __init__
profile_name)
File "/usr/local/lib/python2.7/dist-packages/boto/provider.py", line 201, in __init__
self.get_credentials(access_key, secret_key, security_token, profile_name)
File "/usr/local/lib/python2.7/dist-
packages/boto/provider.py", line 297, in get_credentials profile_name) boto.provider.ProfileNotFoundError: Profile "my-project" not found!
面倒ですが、ツール類のアップデートはこまめにしたいものですね!
コメントを残す