2020年1月5日日曜日

Install SSH key action v1.5.0を公開しました

年をまたいでInstall SSH Key actionがまたひっそりとアップデートし、v1.5.0になりました。

2019年最後の更新、2020年最初の更新がともにInstall SSH Key actionの内容です。
だから何だ。

何が変わった?

アクションの複数回呼び出しに正式対応しました。
いや、今までも一応できていたんですけど、想定はしていませんでした。

複数回呼ばれた場合、configknown_hostsは前回の値に今回の値を追加するようになりました。今までは上書きしていました。

秘密鍵と公開鍵は前回と同じ名前を指定できません。必ずname別名を指定する必要があります。こちらは今までと変わりません。

何がうれしい?

CI環境に鍵を複数登録したい場合に役立ちます。
具体的には複数のサーバーに別々の鍵を使って接続したい場合や、ポートフォワードを使いたい場合です。

例えばポートフォワードを使う場合、最初の呼び出しでは踏み台用の接続鍵やサーバー公開鍵を、2回目の呼び出しでは対象サーバー向けのものを別々に登録できます。
configknown_hostsは追加されるので、上書きの心配はありません。
runs-on: ubuntu-latest
steps:
- name: 踏み台サーバーの接続設定
  uses: shimataro/ssh-key-action@v1
  with:
    private-key: ${{ secrets.SSH_KEY_OF_BASTION }}
    public-key: ${{ secrets.SSH_KEY_OF_BASTION_PUBLIC }}
    name: id_rsa-bastion
    known-hosts: ${{ secrets.KNOWN_HOSTS_OF_BASTION }} # ※1
    config: |                                          # ※2
      Host bastion
        HostName xxx.xxx.xxx.xxx
        User user-of-bastion
        IdentityFile ~/.ssh/id_rsa-bastion
- name: 対象サーバーの接続設定
  uses: shimataro/ssh-key-action@v1
  with:
    private-key: ${{ secrets.SSH_KEY_OF_TARGET }}
    public-key: ${{ secrets.SSH_KEY_OF_TARGET_PUBLIC }}
    name: id_rsa-target
    known-hosts: ${{ secrets.KNOWN_HOSTS_OF_TARGET }} # ※1に追加される
    config: |                                         # ※2に追加される
      Host target
        HostName yyy.yyy.yyy.yyy
        User user-of-target
        IdentityFile ~/.ssh/id_rsa-target
        ProxyCommand ssh -W %h:%p bastion
- name: ポートフォワードでSCP
  run: scp ./foo/ target:bar/
今まではconfigknown_hostsも上書きされていたので、最初の呼び出しでは何も指定せず、2回目の呼び出しで必要な設定を全て入れる必要がありました。
runs-on: ubuntu-latest
steps:
- name: 踏み台サーバーの接続設定
  uses: shimataro/ssh-key-action@v1
  with:
    private-key: ${{ secrets.SSH_KEY_OF_BASTION }}
    public-key: ${{ secrets.SSH_KEY_OF_BASTION_PUBLIC }}
    name: id_rsa-bastion
- name: 対象サーバーの接続設定
  uses: shimataro/ssh-key-action@v1
  with:
    private-key: ${{ secrets.SSH_KEY_OF_TARGET }}
    public-key: ${{ secrets.SSH_KEY_OF_TARGET_PUBLIC }}
    name: id_rsa-target
    known-hosts: ${{ secrets.KNOWN_HOSTS }} # 踏み台と対象サーバーの公開鍵を両方指定
    config: |                               # 踏み台と対象サーバーのconfigを両方指定
      Host bastion
        HostName xxx.xxx.xxx.xxx
        User user-of-bastion
        IdentityFile ~/.ssh/id_rsa-bastion
      Host target
        HostName yyy.yyy.yyy.yyy
        User user-of-target
        IdentityFile ~/.ssh/id_rsa-target
        ProxyCommand ssh -W %h:%p bastion
- name: ポートフォワードでSCP
  run: scp ./foo/ target:bar/
これだと各々の設定の独立性が低く、あまり使い勝手もメンテナンス性もよくないので、独立して指定できるようにしたのが今回の変更です。

それではよいCIライフを。

0 件のコメント:

コメントを投稿