ゆるい感じのプログラムを書きたい。

プログラムの敷居を下げて、多くの人が開発出来るように色々書いていきます!

【モジュールの使い方】get_url 

機能

  • HTTP、HTTPS、またはFTPからファイルをダウンロードします。

補足説明

  • デフォルトで`_proxy~は、ターゲットホストに環境変数が設定されている場合、リクエストはそのプロキシを介して送信されます。

  • この動作は、このタスクの変数を設定するか(環境の設定を参照)またはuse_proxyオプションを使用することでオーバーライドできます。

  • HTTPリダイレクトはHTTPからHTTPSにリダイレクトできるため、両方のプロトコルのプロキシ環境が正しいことを確認する必要があります。

  • Ansible 2.4から、を使用--checkして実行すると、URLを検証するためにHEADリクエストを実行しますが、ファイル全体をダウンロードしたり、ハッシュに対して検証したりすることはありません。

  • Windowsターゲットの場合は
    代わりにansible.windows.win_get_urlモジュールを使用してください。


注意
  • Ansibleではcommandモジュール等でwgetコマンドを使用してダウンロードする方法は推奨されていません。
  • wgetを使用した場合、エラーにはならないが警告メッセージが表示


使用例

  • nginxのサイトからパッケージを/usr/localにダウンロード
- hosts: all
  become: yes
  tasks:
    - name: download bind
      get_url:
        url: http://nginx.org/download/nginx-1.20.2.tar.gz
        dest: /usr/local


  • proxy経由のnginxのサイトからパッケージを/usr/localにダウンロード
- hosts: all
  become: yes
  tasks:

  - name: get_url under proxy enviroment
    hosts: $inventoryファイルに定義しているparam
    enviroment:
      http_proxy: <proxy_server_url>:<proxy_server_port>
      https_proxy: <proxy_server_url>:<proxy_server_port>
    tasks:
    - name: Download the specified file under proxy environment
      get_url:
        url: http://nginx.org/download/nginx-1.20.2.tar.gz
        dest: /usr/local
        mode: '0755'
        use_proxy: yes
        validate_certs: no
      register: download_result
      until: download_result | succeeded
      retries: 3


主なパラメータ

パラメータ 必須 デフォルト値 説明
url ダウンロード元のHTTP,HTTPS,またはFTPのURL
dest ダウンロード先ディレクトリの絶対パス
owner ダウンロードしたファイルの所有者
group ダウンロードしたファイルの所有グループ
mode ダウンロードしたファイルの権限
例:"0664"、"u=rw,g=r,o=r"


全パラメータ

パラメータ 必須 デフォルト値 説明
attributes ファイルの属性を指定
backup no タイムスタンプを含むバックアップファイルを作成
何らかの理由で誤って元ファイルを壊した場合に元のファイルを復元できる。
checksum "" checksumがこのパラメータに渡されると、ダウンロード後に宛先ファイルのダイジェストが計算され、その整合性が保証され、転送が正常に完了したことが確認されます。
形式:
例:
checksum=”sha256:D98291AC[…]B6DC7B97”
checksum=”sha256:http://example.com/path/sha256sum.txt
移植が必要な場合は、sha1アルゴリズムのみが、すべてのプラットフォームとPythonバージョンで使用可能

追加のアルゴリズムにアクセスするために、サードパーティのhashlibライブラリをインストール出来ます。
さらに、チェックサムがこのパラメータに渡され、ファイルがそのdest場所の下に存在する場合
destination_checksumが計算され、checksumがdestination_checksumと等しい場合、ファイルのダウンロードはスキップされます(forcetrueでない場合)
チェックサムdestination_checksumと等しくない場合、宛先ファイルは削除されます。
client_cert SSLクライアント認証に使用されるPEM形式の証明書チェーンファイル
このファイルにはキーも含めることが出来、キーが含まれている場合client_keyは必要ありません。
client_key SSLクライアント認証に使用される秘密鍵を含むPEM形式のファイル
client_cert証明書とキーの両方が含まれている場合、このオプションは必須ではありません。
dest ダウンロード先ディレクトリの絶対パス
force no forceをyesにした場合destで指定したファイルは、毎回ダウンロードし、内容の変更された場合はファイルを置き換えます。その際は、容量の少ないローカルファイル専用にする必要がある。
forceをnoにした場合、destで指定したファイルが存在しない場合のみダウンロードされます。

0.6より前では、このモジュールはデフォルトはyesを設定していた場合と同じ動作をしていました。
エイリアスthirstyは非推奨になり、ver2.13で削除される予定です。
force_basic_auth no 最初の要求時に基本認証ヘッダーの送信を強制します。
httplib2,urlモジュールによって使用されるライブラリーは、Webサービスが401スタータスの初期要求に応答した場合のみ認証情報を送信
一部の基本認証サービスは401を適切に送信してないため、ログインは失敗します。
group ダウンロードしたファイルの所有グループ
headers カスタムHTTPヘッダーをhash/dict形式でリクエストに追加します
hash/dict形式はAnsible2.6で追加されました。

以前のバージョンはkey:value,key:value文字形式を使用していました。
key:value,key:value文字列形式は非推奨になり、バージョン2.10で削除されました。
http_agent ansible-httpget ヘッダーとして認識される項目
ファイルシステムオブジェクトを所有する必要があるグループ名
mode ダウンロードしたファイルの権限
例:"0664"、"u=rw,g=r,o=r"
owner ダウンロードしたファイルの所有者
selevel SELinuxファイルシステムオブジェクトコンテキストのlevel部分
これはMLS/MCS属性であり、rangeとしても扱われる
_defaultに設定すると、使用可能な場合はポリシーのlevel部分が使用されます。
serole SELinuxファイルシステムオブジェクトコンテキストのrole部分
_defaultに設定すると、使用可能な場合はポリシーのrole部分が使用されます。
setype SELinuxファイルシステムオブジェクトコンテキストのtype部分
_defaultに設定すると、使用可能な場合はポリシーのtype部分が使用されます。 |
seuser SELinuxファイルシステムオブジェクトコンテキストのuser部分
これはMLS/MCS属性であり、systemとしても扱われる
_defaultに設定すると、使用可能な場合はポリシーのuser部分が使用されます。
sha256sum "" SHA-265チェックサムがこのパラメータに渡されると、ダウンロード後に指定先のファイルを圧縮して、計算されその整合性を保証後、転送後に正常に完了したことを確認します
このオプションは非推奨であり、バージョン2.14で削除される予定です
checksumを代わりにオプションとして使用してください。
timeout 10 指定したURLへのリクエスタイムアウト時間(秒単位)
tmp_dest 一時ファイルがダウンロードされる場所の絶対パス
Ansible2.5以降で実行すると、パスはデフォルトでansibleのrmote_tmp設定になります
2.5より前のAnsibleを実行すると、デフォルトでTMPDIR,TEMP,TMP,env変数、またはプラットフォーム固有の値になります。
tempfile — Generate temporary files and directories — Python 3.10.5 documentation
unredirected_headers [] 後続のリダイレクトされたリクエストで送信されないヘッダー名のリスト
このリストでは大文字と小文字は区別されません
デフォルトでは、すべてのヘッダーがリダイレクトされます
場合によっては、Authorizationの公開を回避するために、ここに承認などのヘッダーをリストアップすると良いです。
unsafe_writes no ターゲットファイルシステムオブジェクトからのデータ破損や一貫性のない読み取りを防ぐために、アトミック操作をいつ使用するかに影響を与えます
デフォルトでは、このモジュールはアトミック操作を使用して、ターゲットファイルシステムオブジェクトからデータの破損や一貫性のない取り込みを防ぎますが、システムがこれを防ぐ方法で構成されているのか、単に壊れている場合もあります。

1つの例は、Dockerにマウントされたファイルシステムオブジェクトです
これは、コンテナ内からアトミックに更新することは出来ず、安全でない方法でのみ書き込むことが出来ます。

このオプションを使用すると、アトミック操作が失敗したときにAnsibleがファイルシステムオブジェクトを更新する安全でないメソッドにフォールバックできます(ただし、Ansibleに安全でない書き込みの実行を強制することはありません)

重要!安全でない書き込みは競合状態の影響を受け、データの破損につながる可能性があります。
url ダウンロード元のHTTP,HTTPS,またはFTPのURL
url_passeord HTTP基本認証で使用するためのパスワード
url_usernameパラメータが指定されてない場合、url_passwordパラメータは使用されません。
version2.8以降、このオプションにpasswordのaliasも使用できます。
url_username HTTP基本認証で使用するためのユーザー名
このパラメーターはurl_passwordは空のパスワードを許可するサイトでは利用できない
version2.8以降、このオプションにusernameのaliasも使用できます。
use_gssapi no GSSAPIを使用して認証を実行します
通常、これはkerberosまたはNegotiate認証を介したKerberos用です。
Pythonライブラリーgssapiがインストールされている必要があります。
GSSAPIのクレデンシャルは、url_username/url_passwordを使用するか、カスタムKerberosクレデンシャルキャッシュを指定したGSSAPI env ver KRB5CONAMEを使用して指定できます。

NTLM用のGSSAPI mech がインストールされている場合でも、NTLM認証はさぽーとされていません。
use_proxy yes no場合、ターゲットホストの環境変数でProxyが定義されている場合でも、proxyは使用されません。
validate_certs yes noの場合、SSL証明書は検証されません。
これは、自己証明書を使用する個人的に管理されているサイトでのみ使用する必要があります。

アトミック操作 他からの割り込みがない状態にすること


戻り値

Key Type Returned 説明
backup_file String 引数のbackupがyesで変更された場合 ダウンロード後に作成されたバックアップファイルの名前 /path/to/file.txt.2015-02-12@22:09~
checksum_dest String 成功した場合 コピー後のファイルのsha1チェックサム 6e642bb8dd5c2e027bf21dd923337cbb4214f827
checksum_src String 成功した場合 ファイルのsha1チェックサム 6e642bb8dd5c2e027bf21dd923337cbb4214f827
dest String 成功した場合 ファイル/パス /path/to/file.txt
elapsed Unteger 常時 ダウンロードの実行中に経過した秒数 23
gid Integer 成功した場合 ファイルのグループID 100
group String 成功した場合 ファイルのグループ httpd
md5sum String サポートされている場合 ダウンロード後のファイルのmd5チェックサム 2a5aeecc61dc98c4d780b14b330e3282
mode String 成功した場合 ターゲットの権限 0644
msg String 常時 リクエストからのHTTPメッセージ OK (unknown bytes)
owner String 成功した場合 ファイルの所有者 httpd
secontext String 成功した場合 ファイルのSELinuxセキュリティコンテキスト unconfined_u:object_r:user_tmp_t:s0
size Integer 成功した場合 ターゲットのサイズ 1220
src String 常時 ダウンロード後に使用されるソースファイル /tmp/tmpAdFLdV
state String 常時 ターゲットの状態 file
status_mode Integer 常時 リクエストからのHTTPステータスコード 200
uid Integer 成功した場合 実行後のファイルの所有者ID 100
url String 常時 リクエストに使用された実際のURL https://www.ansible.com


ドキュメント

【Ansible Documentation】Module get_url

参考サイト

matsublog Ansible:get-urlモジュールについて