云计算架构学习之Ansible-playbook实战、Ansible-流程控制、Ansible-字典循环-roles角色

发布于:2025-02-19 ⋅ 阅读:(28) ⋅ 点赞:(0)

一、Ansible-playbook实战

1.Ansible-playbook安装软件

```bash
#编写yml
[root@ansible ansible]# cat wget.yml
- hosts: backup
  tasks:
    - name: Install wget
      yum:
        name: wget
        state: present
        
#检查playbook的语法
[root@ansible ansible]# ansible-playbook  --syntax-check wget.yml
playbook: wget.yml


#执行playbook
[root@ansible ansible]# ansible-playbook wget.yml

2.Playbook重构backup服务

```bash
1.定义主机清单
[root@ansible ansible]# cat /etc/ansible/hosts
nfs ansible_ssh_host=10.0.0.31
backup ansible_ssh_host=10.0.0.41

2.写playbook重构
[root@ansible ansible]# cat backup.yml
- hosts: backup
  tasks:
    - name: Install Rsync Server
      yum:
        name: rsync
        state: present

    - name: Configure Rsync Server
      copy:
        src: rsyncd.conf
        dest: /etc/rsyncd.conf

    - name: Create www Group
      group:
        name: www
        gid: 666

    - name: Create User www
      user:
        name: www
        uid: 666
        group: www
        shell: /sbin/nologin
        create_home: false
     
    - name: Configure passwd file
      copy:
        content: rsync_backup:123456
        dest: /etc/rsync.passwd
        mode: 0600

    - name: Create Dir /backup
      file:
        path: /backup
        state: directory
        owner: www
        group: www

    - name: Start Rsync Server
      systemd:
        name: rsyncd
        state: started
        enabled: yes

3.playbook重构nfs服务


```bash
1.定义主机清单
[root@ansible ansible]# cat /etc/ansible/hosts
nfs ansible_ssh_host=10.0.0.31
backup ansible_ssh_host=10.0.0.41

2.打通免秘钥
[root@ansible ~]# ssh-copy-id 10.0.0.31
3.写playbook
[root@ansible ansible]# cat nfs.yml
- hosts: nfs
  tasks:
    - name: Install NFS Server
      yum:
        name: nfs-utils
        state: present

    - name: Configure nfs Server
      copy:
        src: exports
        dest: /etc/

    - name: Create www Group
      group:
        name: www
        gid: 666

    - name: Create User www
      user:
        name: www
        uid: 666
        group: www
        shell: /sbin/nologin
        create_home: false

    - name: Create /data/wp
      file:
        path: /data/wp
        state: directory
        owner: www
        group: www

    - name: Start NFS Server
      systemd:
        name: nfs
        state: started
        enabled: yes

客户端挂载:
[root@ansible ansible]# cat web.yml
- hosts: web01
  tasks:
    - name: Install nfs-utils
      yum:
        name: nfs-utils
        state: present

    - name: mount nfs /data/wp-->wordpress
      mount:
        src: 172.16.1.31:/data/wp
        path: /code/wordpress/wp-content/uploads/
        state: mounted
        fstype: nfs


```


4.Playbook重构nginx-php

```bash
1.定义主机清单
[root@ansible ~]# cat /etc/ansible/hosts
nfs ansible_ssh_host=10.0.0.31
backup ansible_ssh_host=10.0.0.41
web01 ansible_ssh_host=10.0.0.7
web02 ansible_ssh_host=10.0.0.8

2.免秘钥
[root@ansible ~]# ssh-copy-id 10.0.0.8

3.playbook
[root@ansible ansible]# cat nginx.yml
- hosts: web02
  tasks:
    - name: Nginx Repo 
      yum_repository:
        name: nginx
        description: Nginx YUM repo
        baseurl: http://nginx.org/packages/centos/7/$basearch/
        gpgcheck: no
        enabled: yes


    - name: Install Nginx Server
      yum:
        name: nginx
        state: present

    - name: Configure Nginx Server
      copy:
        src: nginx.conf
        dest: /etc/nginx/

    - name: create group www
      group:
        name: www
        gid: 666

    - name: Create www user
      user:
        name: www
        uid: 666
        group: www
        shell: /sbin/nologin
        create_home: false

    - name: Start Nginx Server
      systemd:
        name: nginx
        state: started
        enabled: yes

5.Playbook重构mariadb

[root@ansible ansible]# cat php.yml
- hosts: web02
  tasks:
    - name: Install PHP Server
      yum:
        name: php,php-bcmath,php-cli,php-common,php-devel,php-embedded,php-fpm,php-gd,php-intl,php-mbstring,php-mysqlnd,php-opcache,php-pdo,php-process,php-xml,php-json
        state: present


    - name: Configure PHP Server
      copy:
        src: www.conf
        dest: /etc/php-fpm.d/


    - name: Start PHP Server
      systemd:
        name: php-fpm
        state: started
        enabled: yes

6.整合playbook文件

[root@ansible ansible]# cat mysql.yml
- hosts: db01
  tasks:
    - name: Install mariadb Server
      yum:
        name: mariadb-server,python3-mysqlclient
        state: present

    - name: Start mariadb Server
      systemd:
        name: mariadb
        state: started
        enabled: yes

    - name: copy all.sql to 51
      copy:
        src: all.sql
        dest: /root/

    - name: Configure Mmriadb Server
      mysql_db:
        login_user: root
        login_host: localhost
        login_port: 3306
        name: all
        target: /root/all.sql
        state: import       

    - name: Restart mariadb
      systemd: 
        name: mariadb
        state: restarted
```

##### 07.部署wordpress

```bash
[root@ansible ansible]# cat wp.yml
- hosts: web02
  tasks:
    - name: Delete Default default.conf
      file:
        path: /etc/nginx/conf.d/default.conf
        state: absent

    - name: Copy wp.conf 
      copy:
        src: wp.conf
        dest: /etc/nginx/conf.d/

    - name: unarchive wp.tar.gz
      unarchive:
        src: wp.tar.gz 
        dest: /
        creates: /code/wordpress

    - name: Restart Nginx Server
      systemd:
        name: nginx
        state: restarted

```

二、Ansible-流程控制

1.vars变量定义方法

2.vars变量定义方法

3.变量注册

4.when判断语法格式

5.when判断案例

6.handlers模块

7.nfs服务重构

三、Ansible-字典循环-roles角色

1.字典循环

2.tasks任务整合到一个文件

3.jinja2的循环和判断语法

4.rsync使用jinja2模版重构

5.Roles角色重新编排rsync

6.Roele角色重新编排nfs


网站公告

今日签到

点亮在社区的每一天
去签到