DEVOPS06 - Ansible概述、Playbook编程

一、Ansible概述

1.1 安装ansible

~ ] # pip3 install ansible

1.2 配置运行环境

1.2.1  创建ansible工作目录

~]#    mkdir    /root/myansi/    

1.2.2 创建配置文件

~]#    cd    /root/myansi/    
myansi]#    cat    ansible.cfg        
[defaults]
inventory=hosts
remote_user=root

1.2.3 声明被管理主机

myansi]#    cat    hosts

[db]
node1
[web]
node2
node3

1.2.4 配置名称解析

myansi]#    cat    /etc/hosts

192.168.5.1 node1
192.168.5.2 node2
192.168.5.3 node3

1.2.5 添加远程主机密钥到信任列表

myansi]#    ssh-keyscan 192.168.5.{1..3} node{1..3}   >>    /root/.ssh/known_hosts

实现所有主机免密登录的yaml文件:

---
- name: configure ssh key
  hosts: all
  tasks:
    - name: Set authorized key taken from file
      authorized_key:
        user: root
        state: present
        key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"

1.3 测试ansible

myansi]# ansible    all    -m    ping    -k

二、Playbook编程

2.1 Yaml语法

1. 所有的 YAML 文件开始行都应该是 ---。这是 YAML 格式的一部分,表明一个文件的开始
2.  列表中的所有成员都开始于相同的缩进级别,并且使用一个 "- " 作为开头(一个横杠和一个空格)
3.  一个字典是由一个简单的 键: 值 的形式组成(冒号后面必须是一个空格)

2.2 配置VIM

1. Yaml的缩进不能使用tab键
2.  建议缩进为两个空格
3.  为了实现yml文件按tab键缩进两个空格,可以按以下方式对vim进行定制

autocmd FileType yaml setlocal sw=2 ts=2 et ai

2.3 使用模块

1. Ansible的模块实际上就是一个个的python程序文件
2. Ansible执行任务就是通过调用这些模块来完成的
3. 查看模块列表

[root@bogon    myansi]#    ansible-doc    -l    

4. 查看模块帮助

[root@bogon    myansi]#    ansible-doc    yum

2.4 编写playbook

1.  Playbook有两个play
2.  一个play用于在web上安装httpd,php,php-mysql,并启动服务
3.  另一个play用于在db安装并启动mariadb服务

---
- name: install http php php-mysql
  hosts: web
  tasks:
    - name: ensure a list of packages installed
      yum:
        name: "{{ packages }}"
      vars:
        packages:
        - httpd
        - php
        - php-mysql
    - name: Start service httpd, if not started
      service:
        name: httpd
        state: started
        enabled: yes

- name: install mariadb mariadb-server
  hosts: db
  tasks:
    - name: install the latest version of Apache
      yum:
        name: httpd
        state: latest
    - name: Start service httpd, if not started
      service:
        name: httpd
        state: mariadb
        enabled: yes

2.5 执行playbook

1. 检查语法
[root@bogon    myansi]#    ansible-playbook    --syntax-check    install_web.yml    
2. 执行
[root@bogon    myansi]#    ansible-playbook        install_web.yml    -k    

2.6 ansible-cmdb模块

1、安装
# pip3 install ansible-cmdb

2、利用ansible收集主机信息
[root@room8pc16 myansi]# mkdir /tmp/ansi-cmdb
[root@room8pc16 myansi]# ansible all -m setup --tree /tmp/ansi-cmdb/out/

3、利用ansible-cmdb生成html页面
[root@room8pc16 myansi]# ansible-cmdb /tmp/ansi-cmdb/out/ > /tmp/ansi-cmdb/hosts_info.html
[root@room8pc16 myansi]# firefox /tmp/ansi-cmdb/hosts_info.html

猜你喜欢

转载自blog.csdn.net/qq_36441027/article/details/82996183
今日推荐