AnsibleでSSHパスワード認証

sshpassを入れる

事前にsshpassを入れておく必要があります。

Macではbrewの公式にパッケージがありません。
(セキュリティ上の理由で登録されていないようです。)

探したところ、一撃で入れられるコマンドはこちらにありました。

brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

パスワードの書き方

hostsファイルに次のように書きます。

your_hostnameとyour_passwordは読み替えてください。

your_hostname ansible_ssh_pass=your_password

クラウドサーバを利用していると画面上からsshキーの追加ができますが、
VPSでは未だにパスワードのみのところが多いです。

ansibleで鍵の自動登録させた後、パスワード認証は閉じるという方法が便利かもしれませんね。

Ansibleでファイルに複数行を追記する

Ansibleでファイルに複数行を追記するには、次のような方法があります。

    - name: gitlab ssh config
      lineinfile:
        path: ~/.ssh/config
        create: yes
        line: "{{ item }}"
      with_items:
        - "Host gitlab.com"
        - "  RSAAuthentication yes"
        - "  IdentityFile ~/.ssh/gitlab_rsa"

あまりスマートではないため、他の方法が見つかったら更新します。

Ansibleで.bashrcを読み込む

Ansibleは普通に実行すると/bin/shで実行されます。

なのでbashの設定が読み込まれません。

次のようにbashでの実行をすることで読み込まれるようになります。

shell: bash -lc "rbenv install {{ version }} && rbenv global {{ version }}"

bashの設定は各ユーザのhomeディレクトリに配置されています。

ユーザの使い分けを行っているなら、実行ユーザの変更を忘れないようにしましょう。

become: true
become_user: your-user
shell: bash -lc "rbenv install {{ version }} && rbenv global {{ version }}"