天天看點

ansible-playbook示例

1、自動配置SSH密鑰執行個體

- hosts: hadoop3
  gather_facts: no
  roles:
   - roles
  tasks:
   - name: close ssh yes/no check
     lineinfile: path=/etc/ssh/ssh_config regexp='(.*)StrictHostKeyChecking(.*)' line="StrictHostKeyCheck
ing no"
   - name: delete /root/.ssh/
     file: path=/root/.ssh/ state=absent
   - name: create .ssh directory
     file: dest=/root/.ssh mode=0600 state=directory
   - name: generating local public/private rsa key pair
     local_action: shell ssh-keygen -t rsa -b 2048 -N '' -y -f /root/.ssh/id_rsa
   - name: view id_rsa.pub
     local_action: shell cat /root/.ssh/id_rsa.pub
     register: sshinfo
   - set_fact: sshpub={{sshinfo.stdout}}
   - name: add ssh record
     local_action: shell echo {{sshpub}} > {{AnsibleDir}}/roles/templates/authorized_keys.j2
   - name: copy authorized_keys.j2 to all
     template: src={{AnsibleDir}}/roles/templates/authorized_keys.j2 dest=/root/.ssh/authorized_keys mode=0600
     tags:
     - install ssh
           

2、自動修改主機名執行個體

- hosts: hadoop3
  remote_user: root
  tasks:
  - name: change name
    shell: "echo {{hostname}} > /etc/hostname"
  - name:
    shell: hostname {{hostname|quote}}
           

3、自動優化系統配置執行個體

- hosts: hadoop3
  remote_user: root
  gather_facts: false
  tasks:
   - name: selinux disabled
     lineinfile: dest=/etc/selinux/config regexp='SELINUX=(.*)' line='SELINUX=disabled'
   - name:  
     lineinfile: dest=/etc/security/limits.conf line="{{item.value}}"
     with_items:
     - {value: "*         soft    nofile         655360"}
     - {value: "*         hard    nofile         655360"}
   - name: disabled iptables and firewalld
     shell: systemctl stop firewalld&&systemctl disable firewalld&&iptables -F
   - name: cron ntpdate
     cron: name=ntpdate minute=*/5 user=root job="source /etc/profile;/usr/sbin/ntpdate -u 172.16.21.1
;/sbin/hwclock -w"
           

4、自動配置主機hosts檔案執行個體

- hosts: hadoop3
  remote_user: root
  roles:
  - roles
  tasks:
   - name: add localhost
     local_action: shell echo "127.0.0.1   localhost" > {{AnsibleDir}}/roles/templates/hosts.j2
     run_once: true
   - set_fact: ipaddress={{inventory_hostname}}
   - set_fact: hostname={{hostname}}
   - name: add host record
     local_action: shell echo {{ipaddress}} {{hostname}} >> {{AnsibleDir}}/roles/templates/hosts.j2
   - name: copy hosts.j2 to all host
     template: src={{AnsibleDir}}/roles/templates/hosts.j2 dest=/etc/hosts
           

5、自動安裝JDK并設定環境變量執行個體

- hosts: hadoop3
  remote_user: root
  roles:
  - roles
  tasks:
   - name: mkdir jdk directory
     file: path=/usr/java state=directory mode=0755
   - name: copy and unzip jdk
     unarchive: src={{AnsibleDir}}/roles/files/jdk1.8.tar.gz dest=/usr/java
   - name: delete line
     lineinfile: dest=/etc/profile regexp='(.*)JAVA_HOME(.*)' state=absent
   - name: set jdk env
     lineinfile: dest=/etc/profile line="{{item.value}}" state=present
     with_items:
     - {value: "export JAVA_HOME=/usr/java/jdk1.8.0_162"}
     - {value: "export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"}
     - {value: "export PATH=$JAVA_HOME/bin:$PATH"}
   - name: source profile
     shell: source /etc/profile
           

簡單示例,建立檔案

vim create.yml

---
- hosts: ali
  remote_user: root
  tasks:
        - name: 執行指令 #類似于備注資訊,接下來要幹嘛
          shell: ps -ef|grep ssh > /a.txt && mkdir  /tmp/a
        - name: 執行command
          command: mv /a.txt /tmp/a
           
- hosts: ali
-   remote_user: root
  tasks:
       # - name: 執行指令 #類似于備注資訊,接下來要幹嘛
       #   shell: ps -ef|grep ssh > /a.txt && mkdir  /tmp/a
        - name: 執行删除a.txt
          shell: rm -rf /tmp/a/a.txt
           

繼續閱讀