GAGA LIFE.

インフラエンジニアブログ

スポンサーリンク

straceコマンドついて

概要

straceについての備忘録です。
個人的に利用頻度は高くないですが、時々実行しようとすると忘れていることが多いので まとめておきます。

straceについて

straceは実行中のプログラムが呼んだシステムコールを表示してくれるツールです。
straceの結果から、どのシステムコールで待っているのか・OSの何の関数で待機しているかが確認可能です。
アプリケーションプログラムが内部でどの部分で待機しているかは確認できません。

インストール(CentOS)

CentOS

yum install strace

ubuntu

apt-get install strace

オプション(使用頻度が高いもの)

Options Description
s 表示する最大文字列サイズを指定(デフォルトは32)。システムコールなどで読み書きした内容を全て確認したい場合は大きくする。
tt 行頭にタイムスタンプを出力(マイクロ秒)
T 行末にシステムコールに費やした時間(※)を表示。※各システムコールの開始と終了の間の時間差を記録
ff 子プロセスのシステムコールもトレース。-oが有効な場合プロセス(スレッド)毎に別ファイルに出力
o 指定したファイル名に出力。-ffとの併用で ファイル名. に出力
p プロセスIDを指定
e どのイベントをトレースするか、またはどのようにトレースするかを変更する修飾表現
c システムコールごとに統計情報(時間/呼び出し/エラーのカウント)を表示
r システムコールが要した時間を出力

-f オプションの場合、別プロセスのトレース結果が同一ファイルに出力される。
別ファイルにしたい場合は、-ff オプションにすれば良い。

基本的な使用方法

$ strace [command]

実行例

  • 実行コマンドのトレース「$ strace <実行コマンド>」
$ strace ls
  • ファイルのトレース「$ strace <./ファイル名>」
$ strace ./hello >/dev/null
  • 確認するシステムコールを限定する「$ strace -e trace=<システムコール名(,システムコール名)>」
$ strace -e trace=open,read,write,close ./hello data >/dev/null
  • PIDを指定してstrace 「$ strace -p
$ strace -p 1111
  • トレース結果をファイル出力「$ strace -o <出力ファイル>」
$ strace -o strace-output.txt ls
  • システムコールが要した時間を出力「$ strace -r」
$ strace -r ls
  • トレース結果の統計情報を出力「$ strace -c」
$ strace -c ls
  • 実行時刻(秒単位)の表示(-t)「$ strace -t」
$ strace -t -p 2298
  • 実行時刻(マイクロ秒単位)の表示(-tt)「$ strace -t」
$ strace -tt -p 2298
  • 実行時間の表示方法(-T)「$ strace -T」
$ strace -T -p 2298
  • 特定のシステムコールを実行結果から除外「$ strace -e 'trace=!<除外対象のシステムコール>'」※複数可
$ strace -e 'trace=!write' -p 1347
  • 表示する文字列数を調整する(-s)「$ strace -s <数値>」
$ strace -s 100 -p 4159
  • 実行結果をプロセス毎にわける方法(-ff)「$ strace -ff」
$ strace -ff -p 3311,3312,3313,3314,3315,3316 -o strace.log

実用的な使用方法

  • システムコールの詳細確認
$ strace -Ttt -ff -s 1500000 -o <ログ出力先ファイル名> -p <PID>
$ strace -Ttt -ff -s 1500000 -o <ログ出力先ファイル名> <コマンド>
$ strace -Ttt -ff -s 1500000 -o /home/oracle/work/strace_ls.log ls
dump strace_ls.log.15881
[oracle@consrsec work]$ head strace_ls.log.15881 
02:37:42.710875 execve("/usr/bin/ls", ["ls"], [/* 55 vars */]) = 0 <0.000175>
02:37:42.711208 brk(0)                  = 0x7bb000 <0.000007>
02:37:42.711253 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1bd8854000 <0.000009>
02:37:42.711289 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) <0.000010>
02:37:42.711332 open("/u01/app/oracle/product/18.0.0/dbhome_1/lib/tls/x86_64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000013>
02:37:42.711378 stat("/u01/app/oracle/product/18.0.0/dbhome_1/lib/tls/x86_64", 0x7ffca63648b0) = -1 ENOENT (No such file or directory) <0.000009>
02:37:42.711402 open("/u01/app/oracle/product/18.0.0/dbhome_1/lib/tls/libselinux.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000008>
02:37:42.711425 stat("/u01/app/oracle/product/18.0.0/dbhome_1/lib/tls", 0x7ffca63648b0) = -1 ENOENT (No such file or directory) <0.000017>
02:37:42.711458 open("/u01/app/oracle/product/18.0.0/dbhome_1/lib/x86_64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000008>
02:37:42.711480 stat("/u01/app/oracle/product/18.0.0/dbhome_1/lib/x86_64", 0x7ffca63648b0) = -1 ENOENT (No such file or directory) <0.000007>
  • システムコールの種類別に集計(時間・回数)
$ strace -fc -o <ログ出力先ファイル名> -p <PID>
$ strace -fc -o <ログ出力先ファイル名> <コマンド>
$ strace fc -o /home/oracle/work/strace_ls.log ls
execve("/usr/bin/fc", ["fc", "-o", "/home/oracle/work/strace.log", "ls"], [/* 55 vars */]) = 0
brk(0)                                  = 0x1fe7000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc2bb9c1000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/u01/app/oracle/product/18.0.0/dbhome_1/lib/tls/x86_64/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/u01/app/oracle/product/18.0.0/dbhome_1/lib/tls/x86_64", 0x7ffe3891ae20) = -1 ENOENT (No such file or directory)
open("/u01/app/oracle/product/18.0.0/dbhome_1/lib/tls/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/u01/app/oracle/product/18.0.0/dbhome_1/lib/tls", 0x7ffe3891ae20) = -1 ENOENT (No such file or directory)
open("/u01/app/oracle/product/18.0.0/dbhome_1/lib/x86_64/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/u01/app/oracle/product/18.0.0/dbhome_1/lib/x86_64", 0x7ffe3891ae20) = -1 ENOENT (No such file or directory)
open("/u01/app/oracle/product/18.0.0/dbhome_1/lib/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/u01/app/oracle/product/18.0.0/dbhome_1/lib", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=113542, ...}) = 0
mmap(NULL, 113542, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fc2bb9a5000
close(3)                                = 0
open("/lib64/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\316\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=174576, ...}) = 0
mmap(NULL, 2268928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc2bb577000
mprotect(0x7fc2bb59c000, 2097152, PROT_NONE) = 0
mmap(0x7fc2bb79c000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7fc2bb79c000
close(3)                                = 0

見方

Column Examples Description
1 02:37:42.710875 システムコール実行開始時刻(時:分:秒.マイクロ秒)
2 execve("/usr/bin/ls", ["ls"], [/ 55 vars /]) = 0 システムコール
3 <0.000175> システムコール実行に要した時間(秒.マイクロ秒)

システムコールのマニュアル確認方法

man 2 <システムコール名>

  • open
$ man 2 open
  • write
$ man 2 write

参考資料

Ansible インベントリ

概要

インベントリの定義や基礎的な使用方法についてメモします。
インベントリは以下のいずれかでターゲットノードの接続情報を定義します。
- INI形式
- YAML形式
デフォルトのインベントリは、「/etc/ansible/hosts」が利用されます。
カスタマイズしたインベントリを利用する場合は、ansibleコマンド、
もしくはansible-playbookコマンド実行時にインベントリパスを明示的に指定(オプション「-i」)します。

ホストのグループ化

同様の設定を実行するサーバー群をグルーピングしておくことによって、グループ化されたターゲットノードに対して、同一の処理を実施可能です。
- グループ定義:"[]"でグループ名を囲む
- その下にIPアドレス・ホスト名を列挙
- グループには階層を付けることが可能
- 上位グループは"[グループ:children]"を表記後下位グループを記述する
上記により、個々のグループに処理を実施せずとも複数のグループ全体に処理を実施することも可能になります。
なお、各ターゲットノードは暗黙的に[all]グループに属します。

インベントリグループの例

例) group_inventory.ini

[web_servers]    ## Group Name
192.168.3.[8.10] ## Target Node

[oracle]
oracle122
oracle181

[mysql]
mysql-[a:d]      ## mysql-a, mysql-b, mysql-c, mysql-d

[db_servers:children]  ## oracle,mysqlの上位グループ
oracle
mysql

ホスト変数/グループ変数

インベントリ変数:各ノードやグループに対する固有の変数定義が可能。
以下のような状況の場合にはインベントリ変数の利用を考えます。
- 環境によって接続ユーザーや接続方法が異なる場合
- 特定のホストに対して固有の環境情報を指定したい場合
指定対象によって、以下の通り名称が分かれます。

Name Description
Host Variables ターゲットノード固有に適用される変数。インベントリではターゲットノードの後ろに定義する
Group Variables グループ全体に適用される変数。インベントリでは"[グループ名:vars]"というセクションを作成し、その下に変数を列挙する

インベントリ変数の例

var_inventory.ini

[web_servers]
192.168.3.[8:10]

[oracle]
oracle122 ansible_host=192.168.3.100  ##[ホスト変数]oracle122のSSH接続IP
oracle181 ansible_host=192.168.3.101  ##[ホスト変数]oracle181のSSH接続IP

[mysql]
mysql-[a:d]

[db_servers:children]
oracle
mysql

[web_server:vars]
http_port=8080    ##[グループ変数]"http_port"の設定

[all:vars]
ansible_port=1022 ##[グループ変数]すべてのサーバーのSSH接続ポート
ansible_user=ansible  ##[グループ変数]SSH接続ユーザー

ホスト変数/グループ変数には、以下が存在します。
- ユーザー定義変数:ユーザーが固有に設定可能 - 接続変数(Behaviral Inventory Parameters):ターゲットノードへの接続を制御する

接続変数

Category Variables Default Description
ターゲットノード接続 ansible_connection smart Connectionプラグインを利用したターゲットノードへの接続方法を設定する。SSHを利用しない、[local]や「docker」接続に変更可能
SSH接続 ansible_host - ターゲットノードの名前やエイリアス名を設定する
SSH接続 ansible_port 22 ターゲットノードのSSHポートを設定する
SSH接続 ansible_user コマンド実行ユーザー SSH接続するユーザー名を設定する
SSH接続 ansible_ssh_pass - SSHパスワード認証のパスフレーズを設定する
Private設定 ansible_become false 特権実行を行うかどうかを設定する
Private設定 ansiblebecome_user - タスクを実行する特権ユーザーを設定する
Private設定 ansible_become_pass - 特権ユーザーになるためのパスフレーズを設定する
ターゲットノード環境 ansible_shell_type sh ターゲットノードのShellのタイプを選択する
ターゲットノード環境 ansible_python_interpreter /usr/bin/python ターゲットノードのPythonのパスを指定する

インベントリ変数のファイル分割

インベントリの中で定義していたホスト変数やグループ変数はYAMLファイルに分割可能です。
これにより、INI形式で起債されたインベントリにはターゲットノードを起債し、ターゲットノードごとの変数はYAMLファイルにまとめることが可能です。
動的に読み込みを行うためには指定のディレクトリ構造とファイルの命名規則に則って定義する必要があります。

インベントリ変数のディレクトリ構造

Name Description
グループ変数 group_varsというディレクトリ配下に「group_vars/<グループ名>.yml」または「group_vars/<グループ名>/XXX.yml」という名前でYAMLを配置
ホスト変数 host_varsというディレクトリ配下に「group_vars/<ホスト>.yml」または「group_vars/<ホスト名/XXX.yml>」という名前でYAMLファイルを配置

インベントリの例

inventory.ini

[web_servers]   ## グループ名
192.168.3.[1-3] ## 192.168.3.1 ~ 192.168.3.3

[db_servers]    ## グループ名
mysql-[a-c]     ## mysql-a, mysql-b, mysql-c

Ansible playbookコマンド実行

概要

プレイブックコマンドを利用したコマンドを確認します。

設定

基本となるインベントリとプレイブックを作成していきます。
その際、ターゲットノードをインベントリに指定します。
・やりたいこと
- ターゲットにディレクトリ作成
- コントロールのhostsファイルをコピー・転送

$ pwd
/home/ansible/PATH_TO/effective_ansible/sec2/inventory
$ cat test02_inventory.ini 
[test_servers]
192.168.3.9
192.168.3.8
$ cd ..
$ cat 
inventory/         test_playbook.yml  
$ cat test_playbook.yml 
---
- hosts: test_servers
  tasks:
  - name: create directory
    file:
       path: /home/ansible/tmp
       state: directory
       owner: ansible
       mode: 0755

  - name: copy file
    copy:
       src: /etc/hosts
       dest: /home/ansible/tmp/hosts
       owner: ansible
       mode: 0644

※IPアドレスは環境に合わせて適宜設定。
今回は192.168.3.9:コントロールノード、192.168.3.8:ターゲットノード

ansible-playbookコマンド実行

  • コントロールノード
$ ansible-playbook -i ./sec2/inventory/test02_inventory.ini ./sec2/test_playbook.yml 

PLAY [test_servers] ************************************************************************************

TASK [Gathering Facts] *********************************************************************************

TASK [create directory] ********************************************************************************
changed: [192.168.3.9]
changed: [192.168.3.8]

TASK [copy file] ***************************************************************************************
changed: [192.168.3.9]
changed: [192.168.3.8]

PLAY RECAP *********************************************************************************************
192.168.3.8                : ok=3    changed=2    unreachable=0    failed=0
192.168.3.9                : ok=3    changed=2    unreachable=0    failed=0
  • ターゲットノード
$ ls -la tmp/hosts 
-rw-r--r--. 1 ansible ansible 179  120 19:03 tmp/hosts

Ansible実行結果

Results Status Description
ok 成功 既に定義された状態になっているため、処理を実行しなかった
changed 成功 タスクで指定したステータスと異なっていたため、変更を実施した
skip 成功 タスクの実行条件に合っていなかったため、処理を実行しなかった
unreachable 失敗 ターゲットノードに接続できなかった
failed 失敗 タスク実行の結果、何らかのエラーが発生し、定義された状態にならなかった

ansibleコマンド実行

概要

環境とコントロール/ターゲットを整備したので、動作確認のためにコマンドを実行してみます。

コマンド実行

ここでは、playbookを使用せず、モジュールを直接指定するansibleコマンドを使用します。
まず、接続可能ターゲットの情報を記載したインベントを作成。
動作確認としてターゲットノードを用意しないでコントロールノードそのものをターゲットノードに指定しています。
./sec2/inventory/test01_inventory.ini

1 [test_servers]
2 localhost

動作確認

ping

$ cd PATH_TO/effective_ansible/sec2/
$ ansible -i inventory/test01_inventory.ini test_servers -m ping
localhost | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

「localhost | SUCCESS」の表示で接続成功を確認できます。 「"changed": false」は、実行コマンドで何の変更もなされていないためです。

file

「-a」:作成ファイル指定

$ cd PATH_TO/effective_ansible/sec2/
$ ansible -i inventory/test01_inventory.ini test_servers -m file -a 'path=/home/ansible/test.txt state=touch mode=0644'
localhost | SUCCESS => {
    "changed": true, 
    "dest": "/home/ansible/test.txt", 
    "gid": 1002, 
    "group": "ansible", 
    "mode": "0644", 
    "owner": "ansible", 
    "secontext": "unconfined_u:object_r:user_home_t:s0", 
    "size": 0, 
    "state": "file", 
    "uid": 1002
}
$ ls -la /home/ansible/test.txt 
-rw-r--r--. 1 ansible ansible 0  114 18:43 /home/ansible/test.txt

「"changed": true」で変更を確認でき、test.txtの空ファイル作成ができていることが確認できます。

Ansible ansible.cfgのパラメータ

設定パラメータ デフォルト値 内容
forks 5 ターゲットノードの並列処理を行うプロセス数を設定する。値が大きいほど、並列に早い処理が可能だが、値が大きすぎる場合、CPUやN/W負荷となる
log_path - ansible実行コマンドログの配置場所を設定する。Ansible実行ユーザーがログファイルへのアクセス権限を持っているか要確認
host_key_checking True ターゲットノードにSSH接続する際の公開鍵のフィンガープリントチェックを行う
gathering implicit ターゲットノードの詳細情報取得に関する設定を行う
・implicit
キャッシュが無視され、常に情報収集が実施される
・explicit
キャッシュを利用し、情報収集が実施されない
・smart
新規に接続した時のみ情報収集を行い、キャッシュがある場合は情報収集を実施しない
gather_subset all ターゲットノードの詳細情報取得を制限できる
・all
全ての情報を収集する
・network
最小限の情報とN/W情報を収集する
・hardware
ハードウェア情報を収集する
・virtual
最小限の情報と仮想マシンに関する情報を収集する
transport smart ターゲットノードへの接続方法の設定を行う
・smart
OpenSSHがControlPersist機能対応時は「OpenSSH」接続を行い、未対応であれば、Pythonモジュールの「paramiko」を利用して接続を実施する
・paramiko
Pythonのssh機能で、アクションのたびに各ホストに再接続を行う
・local
SSHを利用せず、直接ローカルホストに接続を行う

Ansible事前準備

概要

Ansibleで動作確認する前の事前準備

事前準備

  • Ansibleユーザー作成
  • SSH公開鍵認証の設定
  • 作業ディレクトリの作成
  • ansible.cfg設定

Ansibleユーザー作成

Ansibleユーザー(一般ユーザー)を作成。必要に応じて特権を付与
※ここではユーザーansibleを作成

# useradd ansible

SSH公開鍵認証の設定

SSHを使用してターゲットノードに接続を実施しますが、公開鍵認証方式を利用します。
コントロールノードがターゲットノードに接続するため、コントロールノード側で秘密鍵と公開鍵を作成し、
ターゲットノード側に公開鍵を登録します。

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ansible/.ssh/id_rsa): 
Created directory '/home/ansible/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ansible/.ssh/id_rsa.
Your public key has been saved in /home/ansible/.ssh/id_rsa.pub.
$ ssh-copy-id -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa.pub localhost
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub"
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
ansible@localhost's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -o 'StrictHostKeyChecking=no' 'localhost'"
and check to make sure that only the key(s) you wanted were added.
$ ssh-copy-id -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa.pub [ターゲットノード]

作業ディレクトリの作成

コントロールノード

$ mkdir -vp PATH_TO/effective_ansible/sec2/inventory/
mkdir: ディレクトリ `PATH_TO' を作成しました
mkdir: ディレクトリ `PATH_TO/effective_ansible' を作成しました
mkdir: ディレクトリ `PATH_TO/effective_ansible/sec2' を作成しました
mkdir: ディレクトリ `PATH_TO/effective_ansible/sec2/inventory/' を作成しました

ansible.cfg設定

Ansibleの設定ファイルであるansible.cfgは、配置場所によって読み込まれる優先順位が異なるようです。
以下の順序でansible.cfgを検索します。
1.環境変数(ANSIBLE_CONFIG=/usr/local/ansible/conf/ansible.cfg)
2.カレントディレクトリに存在する設定(./ansible.cfg)
3.ホームディレクトリに存在する設定($HOME/.ansible.cfg)
4./etc/ansible/ansible.cfg
- OSパッケージマネージャからのインストール:/etc/ansible/配下にデフォルトで配備
- pipやソースコードからのインストール:設定ファイルは存在しない
基本的にはホームディレクトリ($HOME/.ansible.cfg)に配置するのが良いようです。
$HOME/.ansible.cfg

[default]
# some basic default values...

forks = 15
log_path = $HOME/.ansible/ansible.log
host_key_config = False
gathering = smart

Ansibleインストール

概要

Ansibleをインストールしてみたのでメモします。

ダウンロード先

インストール方法

Ansibleのインストール方法には、いくつかの方法があります。
利用しているOSや環境によって異なりますので、適宜環境に合った方法を選択します。

システムのパッケージマネージャを使用したインストールする

  • Fedora
$ sudo dnf install ansible
  • RHELとRHEL-based (CentOS, Scientific Linux, Unbreakable Linux)
$ sudo yum install ansible
  • UbuntuとDebian
$ sudo apt-get install ansible

Ansibleのdebパッケージは標準リポジトリに存在しないようです。
そのため、「apt-add-repository」でインストールし、拡張リポジトリ(PPA:Personal Package Archive)を追加し、
その後、Ansibleをインストールします。

  • Mac OS X
$ brew update
$ brew install ansible
  • pip経由
$ sudo easy_install pip
$ sudo pip install ansible
$ ansible --version
ansible 2.0.2
  • ソースコードからのインストール
$ git clone git://github.com/ansible/ansible.git
$ cd ansible/
$ source ./hacking/env-setup
$ sudo easy_install pip
<A long output follows>
$ sudo pip install paramiko PyYAML jinja2 httplib2
$ git checkout v2.0.2
$ ansible --version
  • 古いバージョンのインストール
$ sudo apt-get-repository -y ppa:ansible/ansible-2.0

インストール例

  • CentOS
$ cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core) 
$ sudo yum install -y ansible
読み込んだプラグイン:fastestmirror, langpacks
Determining fastest mirrors
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
base                                                                                                                                                                                        | 3.6 kB  00:00:00     
docker-ce-stable                                                                                                                                                                            | 3.5 kB  00:00:00     
extras                                                                                                                                                                                      | 3.4 kB  00:00:00     
updates                                                                                                                                                                                     | 3.4 kB  00:00:00     
(1/4): base/7/x86_64/group_gz                                                                                                                                                               | 166 kB  00:00:00     
(2/4): extras/7/x86_64/primary_db                                                                                                                                                           | 156 kB  00:00:00     
(3/4): updates/7/x86_64/primary_db                                                                                                                                                          | 1.3 MB  00:00:00     
(4/4): base/7/x86_64/primary_db                                                                                                                                                             | 6.0 MB  00:00:01     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ ansible.noarch 0:2.4.2.0-2.el7 を インストール
--> 依存性の処理をしています: sshpass のパッケージ: ansible-2.4.2.0-2.el7.noarch
--> 依存性の処理をしています: python2-jmespath のパッケージ: ansible-2.4.2.0-2.el7.noarch
--> 依存性の処理をしています: python-passlib のパッケージ: ansible-2.4.2.0-2.el7.noarch
--> 依存性の処理をしています: python-paramiko のパッケージ: ansible-2.4.2.0-2.el7.noarch
--> 依存性の処理をしています: python-jinja2 のパッケージ: ansible-2.4.2.0-2.el7.noarch
--> 依存性の処理をしています: python-httplib2 のパッケージ: ansible-2.4.2.0-2.el7.noarch
--> 依存性の処理をしています: PyYAML のパッケージ: ansible-2.4.2.0-2.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ PyYAML.x86_64 0:3.10-11.el7 を インストール
---> パッケージ python-httplib2.noarch 0:0.9.2-1.el7 を インストール
---> パッケージ python-jinja2.noarch 0:2.7.2-2.el7 を インストール
--> 依存性の処理をしています: python-babel >= 0.8 のパッケージ: python-jinja2-2.7.2-2.el7.noarch
--> 依存性の処理をしています: python-markupsafe のパッケージ: python-jinja2-2.7.2-2.el7.noarch
---> パッケージ python-paramiko.noarch 0:2.1.1-9.el7 を インストール
---> パッケージ python-passlib.noarch 0:1.6.5-2.el7 を インストール
---> パッケージ python2-jmespath.noarch 0:0.9.0-3.el7 を インストール
---> パッケージ sshpass.x86_64 0:1.06-2.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ python-babel.noarch 0:0.9.6-8.el7 を インストール
---> パッケージ python-markupsafe.x86_64 0:0.11-10.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

===================================================================================================================================================================================================================
 Package                                                  アーキテクチャー                              バージョン                                            リポジトリー                                    容量
===================================================================================================================================================================================================================
インストール中:
 ansible                                                  noarch                                        2.4.2.0-2.el7                                         extras                                         7.6 M
依存性関連でのインストールをします:
 PyYAML                                                   x86_64                                        3.10-11.el7                                           base                                           153 k
 python-babel                                             noarch                                        0.9.6-8.el7                                           base                                           1.4 M
 python-httplib2                                          noarch                                        0.9.2-1.el7                                           extras                                         115 k
 python-jinja2                                            noarch                                        2.7.2-2.el7                                           base                                           515 k
 python-markupsafe                                        x86_64                                        0.11-10.el7                                           base                                            25 k
 python-paramiko                                          noarch                                        2.1.1-9.el7                                           updates                                        269 k
 python-passlib                                           noarch                                        1.6.5-2.el7                                           extras                                         488 k
 python2-jmespath                                         noarch                                        0.9.0-3.el7                                           extras                                          39 k
 sshpass                                                  x86_64                                        1.06-2.el7                                            extras                                          21 k

トランザクションの要約
===================================================================================================================================================================================================================
インストール  1 パッケージ (+9 個の依存関係のパッケージ)

総ダウンロード容量: 11 M
インストール容量: 51 M
Downloading packages:
(1/10): PyYAML-3.10-11.el7.x86_64.rpm                                                                                                                                                       | 153 kB  00:00:00     
(2/10): python-httplib2-0.9.2-1.el7.noarch.rpm                                                                                                                                              | 115 kB  00:00:00     
(3/10): python-jinja2-2.7.2-2.el7.noarch.rpm                                                                                                                                                | 515 kB  00:00:00     
(4/10): python-babel-0.9.6-8.el7.noarch.rpm                                                                                                                                                 | 1.4 MB  00:00:01     
(5/10): python-markupsafe-0.11-10.el7.x86_64.rpm                                                                                                                                            |  25 kB  00:00:00     
(6/10): ansible-2.4.2.0-2.el7.noarch.rpm                                                                                                                                                    | 7.6 MB  00:00:02     
(7/10): python-paramiko-2.1.1-9.el7.noarch.rpm                                                                                                                                              | 269 kB  00:00:00     
(8/10): python2-jmespath-0.9.0-3.el7.noarch.rpm                                                                                                                                             |  39 kB  00:00:00     
(9/10): sshpass-1.06-2.el7.x86_64.rpm                                                                                                                                                       |  21 kB  00:00:00     
(10/10): python-passlib-1.6.5-2.el7.noarch.rpm                                                                                                                                              | 488 kB  00:00:00     
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                               3.9 MB/s |  11 MB  00:00:02     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : PyYAML-3.10-11.el7.x86_64                                                                                                                                                         1/10 
  インストール中          : python-httplib2-0.9.2-1.el7.noarch                                                                                                                                                2/10 
  インストール中          : sshpass-1.06-2.el7.x86_64                                                                                                                                                         3/10 
  インストール中          : python-babel-0.9.6-8.el7.noarch                                                                                                                                                   4/10 
  インストール中          : python-paramiko-2.1.1-9.el7.noarch                                                                                                                                                5/10 
  インストール中          : python2-jmespath-0.9.0-3.el7.noarch                                                                                                                                               6/10 
  インストール中          : python-passlib-1.6.5-2.el7.noarch                                                                                                                                                 7/10 
  インストール中          : python-markupsafe-0.11-10.el7.x86_64                                                                                                                                              8/10 
  インストール中          : python-jinja2-2.7.2-2.el7.noarch                                                                                                                                                  9/10 
  インストール中          : ansible-2.4.2.0-2.el7.noarch                                                                                                                                                     10/10 
  検証中                  : python-markupsafe-0.11-10.el7.x86_64                                                                                                                                              1/10 
  検証中                  : python-jinja2-2.7.2-2.el7.noarch                                                                                                                                                  2/10 
  検証中                  : python-passlib-1.6.5-2.el7.noarch                                                                                                                                                 3/10 
  検証中                  : python2-jmespath-0.9.0-3.el7.noarch                                                                                                                                               4/10 
  検証中                  : python-paramiko-2.1.1-9.el7.noarch                                                                                                                                                5/10 
  検証中                  : python-babel-0.9.6-8.el7.noarch                                                                                                                                                   6/10 
  検証中                  : ansible-2.4.2.0-2.el7.noarch                                                                                                                                                      7/10 
  検証中                  : sshpass-1.06-2.el7.x86_64                                                                                                                                                         8/10 
  検証中                  : python-httplib2-0.9.2-1.el7.noarch                                                                                                                                                9/10 
  検証中                  : PyYAML-3.10-11.el7.x86_64                                                                                                                                                        10/10 

インストール:
  ansible.noarch 0:2.4.2.0-2.el7                                                                                                                                                                                   

依存性関連をインストールしました:
  PyYAML.x86_64 0:3.10-11.el7               python-babel.noarch 0:0.9.6-8.el7        python-httplib2.noarch 0:0.9.2-1.el7       python-jinja2.noarch 0:2.7.2-2.el7      python-markupsafe.x86_64 0:0.11-10.el7     
  python-paramiko.noarch 0:2.1.1-9.el7      python-passlib.noarch 0:1.6.5-2.el7      python2-jmespath.noarch 0:0.9.0-3.el7      sshpass.x86_64 0:1.06-2.el7            

完了しました!
$ ansible --version
ansible 2.4.2.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/docker/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
  • Ubuntu
$ sudo apt-get -y install software-properties-common
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  python3-software-properties software-properties-gtk
以下のパッケージはアップグレードされます:
  python3-software-properties software-properties-common software-properties-gtk
アップグレード: 3 個、新規インストール: 0 個、削除: 0 個、保留: 253 個。
85.6 kB のアーカイブを取得する必要があります。
この操作後に追加で 0 B のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 software-properties-common all 0.96.24.32.6 [9,916 B]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 software-properties-gtk all 0.96.24.32.6 [53.6 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python3-software-properties all 0.96.24.32.6 [22.1 kB]
85.6 kB を 0秒 で取得しました (1,039 kB/s)
(データベースを読み込んでいます ... 現在 167352 個のファイルとディレクトリがインストールされています。)
.../software-properties-common_0.96.24.32.6_all.deb を展開する準備をしています ...
software-properties-common (0.96.24.32.6)(0.96.24.32.5 に) 上書き展開しています ...
.../software-properties-gtk_0.96.24.32.6_all.deb を展開する準備をしています ...
software-properties-gtk (0.96.24.32.6)(0.96.24.32.5 に) 上書き展開しています ...
.../python3-software-properties_0.96.24.32.6_all.deb を展開する準備をしています ...
python3-software-properties (0.96.24.32.6)(0.96.24.32.5 に) 上書き展開しています ...
mime-support (3.60ubuntu1) のトリガを処理しています ...
desktop-file-utils (0.23-1ubuntu3.18.04.1) のトリガを処理しています ...
libglib2.0-0:amd64 (2.56.2-0ubuntu0.18.04.2) のトリガを処理しています ...
man-db (2.8.3-2) のトリガを処理しています ...
shared-mime-info (1.9-2) のトリガを処理しています ...
python3-software-properties (0.96.24.32.6) を設定しています ...
gnome-menus (3.13.3-11ubuntu1.1) のトリガを処理しています ...
dbus (1.12.2-1ubuntu1) のトリガを処理しています ...
hicolor-icon-theme (0.17-2) のトリガを処理しています ...
software-properties-common (0.96.24.32.6) を設定しています ...
software-properties-gtk (0.96.24.32.6) を設定しています ...
$ sudo apt-get -y install software-properties-common
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  python3-software-properties software-properties-gtk
以下のパッケージはアップグレードされます:
  python3-software-properties software-properties-common software-properties-gtk
アップグレード: 3 個、新規インストール: 0 個、削除: 0 個、保留: 253 個。
85.6 kB のアーカイブを取得する必要があります。
この操作後に追加で 0 B のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 software-properties-common all 0.96.24.32.6 [9,916 B]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 software-properties-gtk all 0.96.24.32.6 [53.6 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python3-software-properties all 0.96.24.32.6 [22.1 kB]
85.6 kB を 0秒 で取得しました (1,039 kB/s)             
(データベースを読み込んでいます ... 現在 167352 個のファイルとディレクトリがインストールされています。)
.../software-properties-common_0.96.24.32.6_all.deb を展開する準備をしています ...
software-properties-common (0.96.24.32.6)(0.96.24.32.5 に) 上書き展開しています ...
.../software-properties-gtk_0.96.24.32.6_all.deb を展開する準備をしています ...
software-properties-gtk (0.96.24.32.6)(0.96.24.32.5 に) 上書き展開しています ...
.../python3-software-properties_0.96.24.32.6_all.deb を展開する準備をしています ...
python3-software-properties (0.96.24.32.6)(0.96.24.32.5 に) 上書き展開しています ...
mime-support (3.60ubuntu1) のトリガを処理しています ...
desktop-file-utils (0.23-1ubuntu3.18.04.1) のトリガを処理しています ...
libglib2.0-0:amd64 (2.56.2-0ubuntu0.18.04.2) のトリガを処理しています ...
man-db (2.8.3-2) のトリガを処理しています ...
shared-mime-info (1.9-2) のトリガを処理しています ...
python3-software-properties (0.96.24.32.6) を設定しています ...
gnome-menus (3.13.3-11ubuntu1.1) のトリガを処理しています ...
dbus (1.12.2-1ubuntu1) のトリガを処理しています ...
hicolor-icon-theme (0.17-2) のトリガを処理しています ...
software-properties-common (0.96.24.32.6) を設定しています ...
software-properties-gtk (0.96.24.32.6) を設定しています ...
docker@LesPaul:~$ sudo apt-add-repository -y ppa:ansible/ansible
ヒット:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates InRelease
ヒット:3 http://archive.ubuntulinux.jp/ubuntu bionic InRelease
ヒット:4 http://jp.archive.ubuntu.com/ubuntu bionic-backports InRelease
ヒット:5 https://download.docker.com/linux/ubuntu bionic InRelease
ヒット:6 http://archive.ubuntulinux.jp/ubuntu-ja-non-free bionic InRelease
ヒット:7 http://security.ubuntu.com/ubuntu bionic-security InRelease
取得:8 http://ppa.launchpad.net/ansible/ansible/ubuntu bionic InRelease [15.9 kB]
取得:9 http://ppa.launchpad.net/ansible/ansible/ubuntu bionic/main i386 Packages [536 B]
取得:10 http://ppa.launchpad.net/ansible/ansible/ubuntu bionic/main amd64 Packages [536 B]
取得:11 http://ppa.launchpad.net/ansible/ansible/ubuntu bionic/main Translation-en [344 B]
17.3 kB を 4秒 で取得しました (4,909 B/s)
パッケージリストを読み込んでいます... 完了
$ sudo apt-get update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates InRelease
ヒット:3 http://jp.archive.ubuntu.com/ubuntu bionic-backports InRelease
ヒット:4 http://archive.ubuntulinux.jp/ubuntu bionic InRelease
ヒット:5 http://archive.ubuntulinux.jp/ubuntu-ja-non-free bionic InRelease
ヒット:6 https://download.docker.com/linux/ubuntu bionic InRelease
ヒット:7 http://ppa.launchpad.net/ansible/ansible/ubuntu bionic InRelease
ヒット:8 http://security.ubuntu.com/ubuntu bionic-security InRelease
パッケージリストを読み込んでいます... 完了
$ sudo apt-get -y install ansible
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  python-asn1crypto python-cffi-backend python-crypto python-cryptography python-enum34 python-httplib2 python-idna python-ipaddress python-jinja2 python-markupsafe python-paramiko python-pkg-resources
  python-pyasn1 python-setuptools python-six python-yaml sshpass
提案パッケージ:
  python-crypto-doc python-cryptography-doc python-cryptography-vectors python-enum34-doc python-jinja2-doc python-gssapi python-setuptools-doc
以下のパッケージが新たにインストールされます:
  ansible python-asn1crypto python-cffi-backend python-crypto python-cryptography python-enum34 python-httplib2 python-idna python-ipaddress python-jinja2 python-markupsafe python-paramiko python-pkg-resources
  python-pyasn1 python-setuptools python-six python-yaml sshpass
アップグレード: 0 個、新規インストール: 18 個、削除: 0 個、保留: 253 個。
5,512 kB のアーカイブを取得する必要があります。
この操作後に追加で 42.9 MB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-markupsafe amd64 1.0-1build1 [13.0 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-jinja2 all 2.10-1 [94.6 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-yaml amd64 3.12-1build2 [115 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-asn1crypto all 0.24.0-1 [72.7 kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-cffi-backend amd64 1.11.5-1 [63.4 kB]
取得:6 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-enum34 all 1.1.6-2 [34.8 kB]
取得:7 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-idna all 2.6-1 [32.4 kB]
取得:8 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-ipaddress all 1.0.17-1 [18.2 kB]
取得:9 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-six all 1.11.0-2 [11.3 kB]
取得:10 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python-cryptography amd64 2.1.4-1ubuntu1.2 [221 kB]
取得:11 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-pyasn1 all 0.4.2-3 [46.7 kB]
取得:12 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python-paramiko all 2.0.0-1ubuntu1.2 [110 kB]
取得:13 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-httplib2 all 0.9.2+dfsg-1 [34.6 kB]
取得:14 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-crypto amd64 2.6.1-8ubuntu2 [244 kB]
取得:15 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-pkg-resources all 39.0.1-2 [128 kB]
取得:16 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 python-setuptools all 39.0.1-2 [329 kB]
取得:17 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 sshpass amd64 1.06-1 [10.5 kB]
取得:18 http://ppa.launchpad.net/ansible/ansible/ubuntu bionic/main amd64 ansible all 2.7.5-1ppa~bionic [3,931 kB]
5,512 kB を 16秒 で取得しました (349 kB/s)

以前に未選択のパッケージ python-markupsafe を選択しています。
(データベースを読み込んでいます ... 現在 167352 個のファイルとディレクトリがインストールされています。)
.../00-python-markupsafe_1.0-1build1_amd64.deb を展開する準備をしています ...
python-markupsafe (1.0-1build1) を展開しています...
以前に未選択のパッケージ python-jinja2 を選択しています。
.../01-python-jinja2_2.10-1_all.deb を展開する準備をしています ...
python-jinja2 (2.10-1) を展開しています...
以前に未選択のパッケージ python-yaml を選択しています。
.../02-python-yaml_3.12-1build2_amd64.deb を展開する準備をしています ...

~中略~

python-six (1.11.0-2) を設定しています ...
sshpass (1.06-1) を設定しています ...
python-enum34 (1.1.6-2) を設定しています ...
man-db (2.8.3-2) のトリガを処理しています ...
python-ipaddress (1.0.17-1) を設定しています ...
python-setuptools (39.0.1-2) を設定しています ...
python-jinja2 (2.10-1) を設定しています ...
python-cryptography (2.1.4-1ubuntu1.2) を設定しています ...
python-paramiko (2.0.0-1ubuntu1.2) を設定しています ...
ansible (2.7.5-1ppa~bionic) を設定しています ...
$ ansible --version
ansible 2.7.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/docker/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]

参考資料

Learning Ansible 2, Second Edition

Learning Ansible 2, Second Edition

スポンサーリンク