IBM Cloud VRA config-syncを利用したPasswordの同期方法

## この記事の目的

IBMCloudにてネットワークアプライアンスとして、よく利用されるVRA機器についての記事となります。
冗長構成で利用しているVRA２台へのログインを同一のパスワードで入れるようにしたいという目的の下で、Password同期の検証をしたので手順をこちらに記載させていただきます。

### 環境構成
* IBMCloud AT&T vRouter 5600 1801q *2台

### 手順

* Config-Sync用のユーザID 'syncuser' を作成

> * １号機 & 2号機で'syncuser'を作成
* groupをsecrets, levelをadminに指定  #これを忘れるとCommit時にFailでハマるので注意

```
vyatta@vra01# set system login user syncuser authentication plaintext-password zaq12wsx
vyatta@vra01# set system login user syncuser group 'secrets'
vyatta@vra01# set system login user syncuser level 'admin'
vyatta@vra01# commit
```

```
vyatta@vra02# set system login user syncuser authentication plaintext-password zaq12wsx
vyatta@vra02# set system login user syncuser group 'secrets'
vyatta@vra02# set system login user syncuser level 'admin'
vyatta@vra02# commit
```

'syncuser'が作成されていることを確認

```
vyatta@vra01:~$ show configuration commands | grep syncuser
set system login user syncuser authentication encrypted-password '$1$zFIc.9J4$BbRnklrykBipE8Z5CTUK0/'
vyatta@vra01:~$
```

```
vyatta@vra02:~$ show configuration commands | grep syncuser
set system login user syncuser authentication encrypted-password '$1$j.AmdvoZ$4M9HaSLw6JlS8fG8thJ9E/'
vyatta@vra02:~$
```

* config-sync設定
（10.193.xx.aa: VRA#1, 10.193.xx.bb: VRA#2 それぞれの管理アドレスを指定）

VRA#1,VRA#2両方に、下記設定を入れてください。

```
set system config-sync remote-router 10.193.xx.aa password 'zaq12wsx'
set system config-sync remote-router 10.193.xx.aa sync-map 'SYNC'
set system config-sync remote-router 10.193.xx.aa username 'syncuser'
set system config-sync remote-router 10.193.xx.bb password 'zaq12wsx'
set system config-sync remote-router 10.193.xx.bb sync-map 'SYNC'
set system config-sync remote-router 10.193.xx.bb username 'syncuser'
```

次に、sync-mapにて設定を同期する対象となるコマンド文字列を指定します。
下記で指定するルールが同期対象となります。
すでにNAT/Firewall/VPN設定がrule1-3の同期対象として設定してあったため、rule4として
新規にvyattaユーザのパスワード同期するルールを追加します。

```
set system config-sync sync-map SYNC rule 1 action 'include'
set system config-sync sync-map SYNC rule 1 location 'service nat'
set system config-sync sync-map SYNC rule 2 action 'include'
set system config-sync sync-map SYNC rule 2 location 'security firewall'
set system config-sync sync-map SYNC rule 3 action 'include'
set system config-sync sync-map SYNC rule 3 location 'security vpn'
```

VRA#1,VRA#2両方に、rule4を追加する

```
set system config-sync sync-map SYNC rule 4 action 'include'
set system config-sync sync-map SYNC rule 4 location 'system login user vyatta’
```

以上でvyattaユーザのパスワード同期の準備が整いました。

### 確認

試しに、VRA#1にてパスワード変更をしてみます。

```
vyatta@vra01# set system login user vyatta authentication plaintext-password xsw23edc
[edit]
vyatta@vra01# commit
syncing configuration to remote-router 10.193.xx.bb ...
>>>>>>>>>>>>>>>>>>>>
waiting for response from remote-router 10.193.xx.bb ...
10.193.xx.bb: Success
syncing configuration to remote-router 10.193.xx.aa ...

There are no configuration changes to sync to the remote-router 10.193.xx.aa ...
10.193.xx.aa: Success

[edit]
vyatta@vra01#
```


下記、VRA#1で設定した内容がVRA#2に反映されていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703075/492b56e4-7f50-ef60-8190-961ca3083e80.png)


### 最後に

今回、Sync用のユーザとして’syncuser'を'vyatta'ユーザと別に用意しましたが、変更対象ユーザである'vyatta'ユーザをSync用ユーザとして指定できないか、別途検証を行いました。
結果としては、同期はうまくいきませんでした。sync時にvyattaユーザにパスワードの不整合が起きてしまうため、Commitが失敗します。そのため、パスワード変更同期の対象ユーザとSync用のユーザは分ける必要があるようです。

また、ConfigSyncの設定についての詳細は下記にありますので、合わせてご参照ください。

* AT&T High AvailabilityConfiguration Guide
    * https://public.dhe.ibm.com/cloud/bluemix/network/vra/18_high_availability_configuration_5600.pdf
    * P58 - "system config-sync sync-map <sync-map-name> rule <rule-num> location <config-path>" 

* IBMCloud Docs 高可用性 (HA) 構成の同期化
    * https://cloud.ibm.com/docs/virtual-router-appliance?topic=virtual-router-appliance-synchronizing-high-availability-configurations&locale=ja