エントリー:
SubversionでRouterOS構成をバックアップする実装をSSH / SFTP経由で共有しようとします。
私の元の投稿はMikrotikフォーラムで見つけることができます: Mikrotikの設定をSubversion / SVNリポジトリにSSHでバックアップする
ローカルスペースで、私はこのアプローチを思いつきました。Pythonツールを使用したMikroTiksによる構成の集中コレクションですが、ftpのアイデアは私には合いません。
ROSバックアップについて:
ROS設定の完全なコピーが必要な場合は、次のコピーを作成することをお勧めします。
1. ROSにインストールされた証明書(優れたプラットフォームでの回復の可能性のため)
2. ROS設定のバックアップ
3. ROS設定のエクスポート(設定内容と設定をいつでも確認できます)
アイデアの本質:
Linuxサーバーとの類推でアプローチします。 私たち/などはSubversionに行きます。そこでは、設定の変更に関するアラートを常に受信します。さらに、役立つ実際の準備金が常にあります。
Mikrotik Wikiのアイデアに触発されました: システムバックアップにSSHを使用する
ロジック:
1. Linuxのローカルフォルダーにエクスポートする
2.前のエクスポートとの比較を実行します
3.違いがある場合は、バックアップを実行します(デバイスファイルシステムにもエクスポートします)
4.変更をSVNに送信する
要件:
1. SSHが有効なROS 5.15
2. Subversion
3. ssh、sftp、sshpass、svnクライアントがインストールされたLinux
セットアップ:
1. Linuxサーバーで、cronバックアップタスクを実行するアカウントの下からROS公開キーをknown_hostsファイルにインポートします。
ssh-keyscan -v -p 22 -t dsa 192.168.0.1 >> ~/.ssh/known_hosts
2. ROSで、必要なアクションを実行するために必要な権限を持つユーザーを作成し、バックアップタスクを実行するサーバーのアドレスにバインドします。
export = ssh, ftp,read, sniff
backup = ssh, test, policy
get export via sftp = ssh, ftp
get backup via sftp = ssh, ftp, sensitive
/user group add name=backup policy=ssh,ftp,read,sniff,test,policy,sensitive /user add name=backuper password="password" group=backup address=192.168.0.2 disabled=no
3. SVNでは、デバイスのディレクトリを作成し、デバイスの名前に従って作成します。
svn mkdir --parents https://svn.domain.com/svn/admin/trunk/usingw01 --no-auth-cache --username user --password '*****' --message "Created empty directory for usingw01 - `date +"%Y-%m-%d %H:%M:%S"`"
4. Linuxでは、SVNの作業コピー用のディレクトリを作成し、デバイス名に従って作成します。
mkdir -p /root/backup/trunk/usingw01/
5. Linuxでは、ROSファイルを保存するフォルダーからSVNの作業コピーを作成します。
cd /root/backup/trunk/usingw01 svn checkout https://svn.domain.com/svn/admin/trunk/usingw01 . --trust-server-cert --non-interactive --no-auth-cache --username usingw01 --password 'svnpassword'
6. Linuxでは、バックアップ自動化スクリプト用のフォルダーを作成します。
mkdir /root/backup_scripts
7. Linuxで、スクリプトを作成します。
vi /root/backup_scripts/backup_usingw01_to_svn.sh
#!/bin/sh # routername="usingw01" sshhost="192.168.0.1" sshport="22" sshuser="backuper" sshpassword="password" svnlocalpath="/root/backup/trunk/$routername" svnusername="usingw01" svnpassword="svnpassword" current_export_name="$routername-config-export-current.rsc" precedent_export_name="$routername-config-export-precedent.rsc" current_backup_name="$routername-config-backup-current.backup" # # sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport export >$current_export_name diff -I "by Router" $current_export_name $svnlocalpath/$precedent_export_name # if [ "$?" -ne "0" ]; then sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport export file=$current_export_name sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport system backup save name=$current_backup_name sshpass -p $sshpassword sftp -oPort=$sshport $sshuser@$sshhost:$current_backup_name # mv -f $current_export_name $svnlocalpath/ mv -f $current_backup_name $svnlocalpath/ rm -f $svnlocalpath/$precedent_export_name svn add --force $svnlocalpath/$current_export_name svn add --force $svnlocalpath/$current_backup_name svn commit $svnlocalpath --trust-server-cert --non-interactive --no-auth-cache --username $svnusername --password $svnpassword --message "Automated commit of $routername at `date +"%Y-%m-%d %H:%M:%S"`" # mv -f $svnlocalpath/$current_export_name $svnlocalpath/$precedent_export_name exit 1 # # fi mv -f $current_export_name $svnlocalpath/$precedent_export_name exit 0 #
8. Linuxでは、バックアップを実行するcronタスクを作成します。
crontab -e
00 04 * * * sh /root/backup_scripts/backup_usingw01_to_svn.sh
結果:
明日の朝、SVNでROS構成のエクスポートと完全バックアップのコピーを受け取ります。さらに、それらは迅速な回復のためにデバイス上にあります。
また、SVN-notifyを構成して、行われた変更に関する通知と差分を受信することもできます。
SVNでは、いつでも最新バージョンのバックアップとエクスポートをダウンロードできます。 過去の設定の違いを確認し、変更を確認することもできます。 複数の人がデバイスで作業する場合に便利です-誰もがメールの変更を確認し、何がどのように変更されたかを知ることができます。
安全性:
エクスポートのPPPなどのパスワードはクリアテキストで保存されることに注意してください。 セキュリティを強化するために、キーを使用できます
エクスポートする場合、ただしこれはバックアップの実行に制限を課します。 つまり たとえば、PPPにユーザーを追加するとき、バックアップを受け取りません。hide-sensitive
さて、SVNのセキュリティを忘れないでください。
制限事項:
システムユーザーを追加すると、スクリプトはバックアップされません。 これは、エクスポートがROSアカウントをエクスポートしないという事実によるものです(セキュリティ上の理由から)。
この機会に、私は開発者に手紙を書き、構成が最後に変更されたときにエクスポートに情報を追加するよう依頼しました。 彼らは、同様のことがバージョン5.12にあるだろうと答えました-コンパクトにエクスポートしますが、これはそうではなく、今のところこれらの制限は残っています。
使用済みの資料と便利なリンク:
1. マニュアル:構成管理
2. バックアップとエクスポートの違い-変更を監視する方法
3. 証明書のバックアップと復元
4. バックアップファイルのリモート作成
このようなアプローチのアイデアが誰かに役立つことを願っています。