質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

fortios_system_federated_upgradeについて

riho456
riho1128

総合スコア19

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

2回答

0グッド

0クリップ

423閲覧

投稿2022/11/14 07:32

編集2022/11/16 00:30

前提

いつもお世話になっております。Ansible側がFortiOSに対応していない可能性もあるのですが、それらしいモジュールが存在する為、Fortigateのファブリックアップデートが出来ないか検証を行っています。以下の現象について何か情報をお持ちであれば教えて頂けると幸いです。
11/16 更新 CLI画面追加

実現したいこと

AnsibleのモジュールでFortigateのファブリックアップデートを使用してバージョンアップしたい

発生している問題・エラーメッセージ

30分以上立っても以下の状態からアップデートが始まらない
Playbook上の実行結果はsuceess

Playbook実行前
イメージ説明
Playbook実行後
イメージ説明

該当のソースコード

■yml
(Forticonfigから各パラメータを埋めました。configに記載されておらず値が不明なパラメータについてはコメントアウトしています。)

- hosts: fortigates collections: - fortinet.fortios connection: httpapi vars: vdom: "root" ansible_httpapi_use_ssl: yes ansible_httpapi_validate_certs: no ansible_httpapi_port: 443 tasks: - name: Coordinate federated upgrades within the Security Fabric. fortios_system_federated_upgrade: vdom: "{{ vdom }}" system_federated_upgrade: status: "disabled" upgrade_id: "10" # failure_device: FGT60FTK20009862 # failure_reason: "none" # next_path_index: "10" node_list: - coordinating_fortigate: "FGT60E4Q17034080" device_type: "fortigate" serial: "FGT60E4Q17034080" timing: "immediate" upgrade_path: "7-2-3"

■実行結果(抜粋)

changed: 1/1 [fortigate01] => { "changed": true, "diff": {}, "invocation": { "module_args": { "access_token": null, "enable_log": false, "member_path": null, "member_state": null, "system_federated_upgrade": { "failure_device": null, "failure_reason": null, "next_path_index": null, "node_list": [ { "coordinating_fortigate": null, "device_type": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "serial": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "setup_time": null, "time": null, "timing": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "upgrade_path": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER" } ], "status": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "upgrade_id": null }, "vdom": "root" } }, "meta": { "build": 1157, "http_method": "PUT", "http_status": 200, "name": "federated-upgrade", "old_revision": "8faa3163a73431dd00bc0475ea04aa0a", "path": "system", "revision": "f0aecbb5f8c1268d604be94f418f4800", "revision_changed": true, "serial": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "status": "success", "vdom": "root", "version": "v7.2.0" } }

試したこと

GUI操作、CLIコマンドでのアップデートは成功
イメージ説明

CLI画面
イメージ説明

補足情報(FW/ツールのバージョンなど)

現Ver FortigaOS7.2.0→7.2.3にアップデートしたい

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

0

ベストアンサー

GUI操作、CLIコマンドでのアップデートは成功

とのことですが、CLIコマンドは具体的にどんなコマンドだったのでしょうか。

https://github.com/fortinet-ansible-dev/ansible-galaxy-fortios-collection/blob/main/plugins/modules/fortios_system_federated_upgrade.py

def system_federated_upgrade(data, fos): vdom = data["vdom"] system_federated_upgrade_data = data["system_federated_upgrade"] filtered_data = underscore_to_hyphen( filter_system_federated_upgrade_data(system_federated_upgrade_data) ) return fos.set("system", "federated-upgrade", data=filtered_data, vdom=vdom)
def filter_system_federated_upgrade_data(json): option_list = [ "failure_device", "failure_reason", "next_path_index", "node_list", "status", "upgrade_id", ]

とあるので、 federated-upgrade コマンドの引数に failure_device, failure_reason, next_path_index, node_list, status, upgrade_id が候補に挙がっていそうです。このあたりにヒントがありそうな感じがします。

投稿2022/11/15 11:36

編集2022/11/15 12:39
xotaki

総合スコア49

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

riho456

2022/11/16 09:13

ありがとうございます。CLI画面追加しました。アドバイスありがとうございます、調べてみます。
xotaki

2022/11/16 14:10

https://docs.ansible.com/ansible/latest/collections/fortinet/fortios/fortios_system_federated_upgrade_module.html > This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the user to set and modify system feature and federated_upgrade category. Examples include all parameters and values need to be adjusted to datasources before usage. Tested with FOS v6.0.0 もしかして、このモジュールは、 federated-upgrade を execute (実行) するのではなく、 configure (設定) する用途で使われるのではないでしょうか。 ずっと、なぜ status 等をパラメータに渡さないといけないんだろう、と疑問だったのですが、こう考えると自然です。 ちなみに、このモジュールに対応する CLI configuration command は下記と思われます。 https://docs.fortinet.com/document/fortigate/7.2.0/cli-reference/154620/config-system-federated-upgrade Fortinet.Fortios の Module List を眺めてみましたが、やりたいことが実現できそうなものはなさそうです。 https://docs.ansible.com/ansible/latest/collections/fortinet/fortios/index.html Netmiko 等、別の手段での実現をご検討ください。
riho456

2022/11/18 02:33

xotakiさん、お返事遅くなってすいません。このモジュールでのアップデートは諦めがつきました。お忙しい中、アドバイス等いただき感謝です。他方法を検討したいと思います、ありがとうございました。

0

使ったことのないモジュールなので、回答はできないのですが、ドキュメント を見ると、 enable_log を指定できるようですので、 yes に指定して、何が起きているか、見てはいかがでしょうか。

それにしても、このモジュール、 failure_device とか status をパラメータとして渡すのですね。どのように使うのか、想像できません…。

あと、気になったところとしては、ソース中の versioned_schema が 7.2.2 までしかなさそうです。ただ、実行結果は成功しているようなので、的外れだとは思いますが……。

https://github.com/fortinet-ansible-dev/ansible-galaxy-fortios-collection/blob/main/plugins/modules/fortios_system_federated_upgrade.py

投稿2022/11/14 13:56

編集2022/11/14 14:05
xotaki

総合スコア49

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

riho456

2022/11/15 02:28

xotakiさん、コメントありがとうございます。 7.2.2も事前に実施したのですが、成功しませんでした。もしご存じであれば教えて頂きたいのですが、このenable_logというパラメータ初めて見ます。このlogの掃き出し場所等ご存じでしょうか?Playbook上、ansible.log上では特に気になるようなmsg等は確認出来なかったので。
riho456

2022/11/16 00:18

xotakiさん、返信ありがとうございます。出力されてました。 以下です。9:10にAnsibleでupdateかけてます。msg確認してみます。 2022-11-16 09:11:01.260522: checking system_version 2022-11-16 09:11:01.260944: send request: METHOD:[GET] URL:[/api/v2/cmdb/system/interface?vdom=root&action=schema] DATA:[], headers:[{'Accept': 'application/json'}] 2022-11-16 09:11:01.261042: login with username and password 2022-11-16 09:11:01.261175: send request: METHOD:[POST] URL:[/logincheck] DATA:[username=admin&secretkey=Password&ajax=1], headers:[{'Accept': 'application/json'}] 2022-11-16 09:11:01.358534: update_auth 2022-11-16 09:11:01.358996: update x-csrftoken: E84F73A6D7A6332AFC18B46097427656 2022-11-16 09:11:01.359059: response data: 1document.location="/prompt?viewOnly&redir=%2F"; ... 2022-11-16 09:11:01.359115: login with user: admin succeeds 2022-11-16 09:11:01.465684: update_auth 2022-11-16 09:11:01.465815: update x-csrftoken: E84F73A6D7A6332AFC18B46097427656 2022-11-16 09:11:01.465899: response data: { "http_method":"GET", "revision":"cb2685e27c7da87d9ecd172ce8ddfa1a", "results":{ "name":"interface", "category":"table", "help":"Configure interfaces.", "mkey":"name", "mkey... 2022-11-16 09:11:01.469245: system version: v7.2.0 2022-11-16 09:11:01.469299: ansible version: v6.0.0 2022-11-16 09:11:01.470976: send request: METHOD:[PUT] URL:[/api/v2/cmdb/system/federated-upgrade?vdom=root] DATA:[{"node-list": [{"device-type": "fortigate", "serial": "FGT60E4Q17034080", "timing": "immediate", "upgrade-path": "7-2-3"}], "status": "disabled", "upgrade-id": 10}], headers:[{'Accept': 'application/json'}] 2022-11-16 09:11:01.548195: update_auth 2022-11-16 09:11:01.548277: update x-csrftoken: E84F73A6D7A6332AFC18B46097427656 2022-11-16 09:11:01.548303: response data: { "http_method":"PUT", "revision":"32992616d14c9fb8c3b2e1312c796a4c", "revision_changed":true, "old_revision":"d4f6a1bd9d91c7f2e3a878bcae6d86cb", "status":"success", "http_status":200, "... 2022-11-16 09:11:01.606086: logout 2022-11-16 09:11:01.606174: send request: METHOD:[POST] URL:[/logout] DATA:[], headers:[{'Accept': 'application/json'}] 2022-11-16 09:11:01.676375: update_auth 2022-11-16 09:11:01.676505: update x-csrftoken: 0%260 2022-11-16 09:11:01.676543: response data: <script language="javascript"> top.location="/login"; </script> ...

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。