2017-04-10 3 views
-1

私の要件は、ホストからホスト名とjavaバージョンを取得し、それらの値をローカルホストに取り込んでデータベースに格納できることです。 私はローカルホスト上のJavaのバージョンを取得することができる午前、最後のステップは、データベースでこれらの変数の値を格納することです..誰もが私はその可能性:データベース(Oracle/MySql)との接続に関する情報が必要

--- 
- hosts: myserver 
    tasks: 

    - name: Get the Host Name 
    shell: host $(hostname -i) | awk '{print $NF }'|sed 's/\.$//' 
    register: hosts 
    - set_fact: the_hosts=hosts.stdout 
    - debug: var={{the_hosts}} 

    - name: Fetch Java Version 
    shell: /opt/app/java/jdk/jdk180_66/ 
64bit/bin/java -version 2>&1 | grep version | awk '{print $3}' | sed 's/"//g' 
    register: result 
    - set_fact: the_count=result.stdout 
    - debug: var={{the_count}} 

- hosts: localhost 
    tasks: 

    - debug: var=hostvars['zlp12036']['result']['stdout'] 
    - debug: var=hostvars['zlp12037']['result']['stdout'] 
    - debug: var=hostvars['zlp12036']['hosts']['stdout'] 
    - debug: var=hostvars['zlp12037']['hosts']['stdout'] 

答えて

0

を進めることができる方法を提案することができますどのようなすべてのまず、あなたはjdk180_66ハードコードされている場合は、Javaバージョンを決定するのポイント?また、マシンのホスト名を決定するために変数ansible_hostnameを使用することを検討してください。データベース・クライアントは、ローカルホストにインストールされている場合は、クエリを実行したい場合は、あなたは、MySQLの場合はシェルモジュールを、使用することができますから

、これは

- name: insert ansible result shell: mysql -u {{ db.user }} -p {{ db.password }} -e "use {{ db.name }}; INSERT INTO {{ db.table }} values('{{ hostvars[item].hosts.stdout}}','{{ hostvars[item].result.stdout}}');" with_items: groups['myserver']

db.userdb.passwordとのように見えるかもしれませんdb.name変数はデータベースへの接続を保存しています(サーバーに~/.my.cnfのパスワードを格納する方が良い)。db.tableはテーブルの名前で、myserverはサーバーが格納されているインベントリグループの名前です。テーブルのレイアウトを指定していないので、このコマンドを独自のスキーマに合わせて調整してください。

oracleの場合は、同等のsqlplusコマンドを使用する必要があります。

関連する問題