Ansible學習05-變量vars

Ansible中使用變量操作 會使我們操作方便很多,本次說下簡單的變量用法

  - hosts: docker
    remote_user: root
    vars:
        nginx80: /usr/local/nginx/conf/vhost
        nginx14:  https://nginx.org/download/nginx-1.14.2.tar.gz
    tasks:
     - command: ls nginx-1.14.2.tar.gz
       register: result
     - command: ls /usr/local/nginx/conf/vhost
       register: han
       ignore_errors: true
     - name: wget nginx_url14.2
       shell: wget https://nginx.org/download/nginx-1.14.2.tar.gz
       when: result|failed
     - name: mkdir nginx conf
       shell: mkdir -p {{ nginx80 }}
       when: han|failed
     - name: touch nginx config
       file: path={{ nginx80 }}/{{ item }} mode=0644 state=touch
       with_items:
          - nginx80.conf
          - nginx8080.conf
上面是定義的nginx配置文件目錄和下載nginx1.14的壓縮包,然後調用使用
你也可以換一種寫法
  vars:
     -  nginx80: /usr/local/nginx/conf/vhost
     -  nginx14:  https://nginx.org/download/nginx-1.14.2.tar.gz

你也可以在一個vars裏面定義多個name

   - hosts: docker
      remote_user: root
      vars:
        nginx:
          nginx80: /usr/local/nginx/conf/vhost1
          nginx14:  https://nginx.org/download/nginx-1.14.2.tar.gz
        wwwuser:
          nginxuser: www
       tasks:
       - name: conf nginx
         shell: wget {{nginx.nginx14 }}
       - name: mkdir nginx80
         shell: mkdir -p {{nginx.nginx80}}
       - name: touch nginx config
         file: path={{ nginx.nginx80 }}/{{ item }} mode=0644 state=touch
         with_items:
          - nginx_var.conf
       - name: gourp www
         group: name={{ wwwuser['nginxuser']}} gid=3001
       - name: useradd nginx user
         user: name={{ wwwuser.nginxuser }} group=www uid=3001 shell=/sbin/nologin
當我們定義多個vars的時候 有兩種方式在寫
  A: {{ nginx.nginx80 }}
        B: { wwwuser['nginxuser']}}

引入變量

vars_files:
        - /data/sh/vars_nginx.yml
        -  /data/sh/vars_nginx_user.yml

例子

    - hosts: docker
      remote_user: root
      vars_files:
       - /data/sh/vars_nginx.yml
       - /data/sh/vars_nginx_user.yml
      tasks:
       - name: conf nginx
         shell: wget {{nginx.nginx14 }}
       - name: mkdir nginx80
         shell: mkdir -p {{nginx.nginx80}}
       - name: touch nginx config
         file: path={{ nginx.nginx80 }}/{{ item }} mode=0644 state=touch
         with_items:
          - nginx_var.conf
       - name: gourp www
         group: name={{ wwwuser['nginxuser']}} gid=3001
       - name: useradd nginx user
         user: name={{ wwwuser.nginxuser }} group=www uid=3001 shell=/sbin/nologin

交互式輸入參數給與變量

   - hosts: docker
     remote_user: root
     vars:
      nginx:
        nginx80: /usr/local/nginx/conf/vhost1
        nginx14:  https://nginx.org/download/nginx-1.14.2.tar.gz
      wwwuser:
        nginxuser: www
     vars_prompt:
      - name: "user_name"
        prompt: "Enter input name"
        private: no
      - name: "user_Password"
        prompt: "Enter input password(md5之後的加密串)" 
        encrypt: "sha512_crypt"   #給與哈希加密   confirm實現密碼確認功能 開啓是需要數據兩次密碼
        confirm: yes
     tasks:
      - name: create user
        user: name="{{user_name}}" uid=3004 group=root  password="{{user_Password}}" shell=/bin/bash home=/home/{{user_name}}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章