ansible自动化运维(四)

管理变量和事实:

练习:使用基本身份认证的 httpd
在这里插入图片描述ple.com
#写 playbook

--
- name: Webserver vars
  hosts: web
  vars:
          firewall_pkg: firewalld
          firewall_ser: firewalld
          web_pkg: httpd
          web_ser: httpd
          ssl_pkg: mod_ssl
          httpdconf_src: files/httpd.conf
          httpdconf_dest: /etc/httpd/conf/httpd.conf
          secrets_dir: /etc/httpd/secrets
          secrets_dest: "{{ secrets_dir }}/htpasswd"
          secrets_src: files/htpasswd
          web_root: /var/www/html
  tasks:
          - name: Install packages
            yum:
                    name:
                            - "{{ firewall_pkg }}"
                            - "{{ web_pkg }}"
                            - "{{ ssl_pkg }}"
          - name: config service
            copy:
                    src: "{{ httpdconf_src }}"
                    dest: "{{ httpdconf_dest }}"
                    owner: root
                    group: root
                    mode: 0644

          - name: Create secrets directory
            file:
                    path: "{{ secrets_dir }}"
                    state: directory
                    owner: apache
                    group: apache
                    mode: 0500

          - name: Create htpasswd
            copy:
                    src: "{{ secrets_src }}"
                    dest: "{{ secrets_dest }}"
                    owner: apache
                    group: apache
                    mode: 0400

          - name: Create index.html
            copy:
                    content: "{{ ansible_facts['fqdn'] }} ({{ ansible_facts['all_ipv4_addresses'] }})\n"

          - name: Config firewall.service
            service:
                    name: "{{ firewall_ser }}"
                    state: started
                    enabled: true

          - name: Firewall permits https
            firewall:
                    service: https
                    state: enabled
                    immediate: true
                    parmanent: true

          - name: config apache.service
            service:
                    name: "{{ web_ser }}"
                    state: started
                    enabled: true
  - name: test apache
    hosts: localhost
    become: no
    vars:
          - web_user: admin
    vars_files:
          - vars/secret.yml
    tasks:
          - name: Connect Apache with Auth
            uri:
                    url: https://rhel71.com
                    validate_certs: no
                    force_basic_auth: yes
                    user: "{{ web_user }}"
                    password: "{{ web_pass }}"
                    return_content: yes
            register: auth_test

          - debug:
                    var: auth_test.content
                                                                                                                        

#创建加密文件

 mkdir vars
ansible-vault create vars/secret.yml
New Vault password: 'caoaoyuan'
Confirm New Vault password: 'caoaoyuan'

在文件中写入:
web_pass: redhat
在这里插入图片描述
#创建 files 目录

mkdir files

生成一下两个文件。

 htpasswd -cm htpasswd admin        生成htpasswd文件

在这里插入图片描述
更改配置文件允许基于身份认证的访问。

 vim httpd.conf

在这里插入图片描述

#交互式输入密码,进行语法检测
在这里插入图片描述
#执行

 ansible-playbook --vault-id @prompt playbook.yml

在这里插入图片描述
在这里插入图片描述
可以看出返回了dubug值。

#总结
1.变量能够让 playbook 复用
2.可以给清单中的主机和主机组定义变量
3.可以使用事实和外部文件定义变量,也可以在命令行中
4.register 关键字何以用于捕获命令输出
5.ansible vault
6.ansible 事实是从受管主机自动检测到的变量

发布了50 篇原创文章 · 获赞 18 · 访问量 3780

猜你喜欢

转载自blog.csdn.net/thermal_life/article/details/105379992