zoukankan      html  css  js  c++  java
  • ansible实践3-playbook条件判断

    ---
    - hosts: testhost
      user: root
      gather_facts: True
      tasks:
        - name: use when
          shell: touch /tmp/when.txt
          when: facter_ipaddress == "172.7.15.106"
     
    Ansible playbook中的handlers
    执行task之后,服务器发生变化之后要执行的一些操作,比如我们修改了配置文件后,需要重启一下服务
     
    ---
    - name: handlers test
      hosts: web10.aming.com
      user: root
      tasks:
        - name: copy file
          copy: src=/etc/passwd dest=/tmp/aaa.txt
          notify: test handlers
      handlers:
        - name: test handlers
          shell: echo "111111" >> /tmp/aaa.txt
     
     
    说明,只有copy模块真正执行后,才会去调用下面的handlers相关的操作。也就是说如果1.txt和2.txt内容是一样的,并不会去执行handlers里面的shell相关命令。 这种比较适合配置文件发生更改后,重启服务的操作。
     
     
     
    Ansible 安装nginx
     
    思路:先在一台机器上编译安装好nginx、打包,然后再用ansible去下发
    cd /etc/ansible   进入ansible配置文件目录
    mkdir  nginx_install   创建一个nginx_install的目录,方便管理
    cd nginx_install;
    mkdir -p roles/{common,install}/{handlers,files,meta,tasks,templates,vars}
     
    说明:roles目录下有两个角色,common为一些准备操作,install为安装nginx的操作。每个角色下面又有几个目录,handlers下面是当发生改变时要执行的操作,通常用在配置文件发生改变,重启服务。files为安装时用到的一些文件,meta为说明信息,说明角色依赖等信息,tasks里面是核心的配置文件,templates通常存一些配置文件,启动脚本等模板文件,vars下为定义的变量
     
    需要事先准备好安装用到的文件,具体如下:
    在一台机器上事先编译安装好nginx,配置好启动脚本,配置好配置文件
    安装好后,我们需要把nginx目录打包,并放到/etc/ansible/nginx_install/roles/install/files/下面,名字为nginx.tar.gz
     
    启动脚本、配置文件都要放到/etc/ansible/nginx_install/roles/install/templates下面
    cd  /etc/ansible/nginx_install/roles
    定义common的tasks,nginx是需要一些依赖包的
    vim  ./common/tasks/main.yml //内容如下
    - name: Install initializtion require software
      yum: name={{ item }} state=installed
      with_items:
        - zlib-devel
        - pcre-devel
     
    定义变量
    vim   /etc/ansible/nginx_install/roles/install/vars/main.yml //内容如下
    nginx_user: www
    nginx_port: 80
    nginx_basedir: /usr/local/nginx
     
     
    首先要把所有用到的文档拷贝到目标机器
    vim   /etc/ansible/nginx_install/roles/install/tasks/copy.yml //内容如下
    - name: Copy NginxSoftware   
      copy: src=nginx.tar.gz dest=/tmp/nginx.tar.gz owner=root group=root
    - name: Uncompression Nginx Software
      shell: tar zxf /tmp/nginx.tar.gz -C /usr/local/
    - name: Copy NginxStart Script
      template: src=nginx dest=/etc/init.d/nginx owner=root group=root mode=0755
    - name: Copy NginxConfig
      template: src=nginx.conf dest={{ nginx_basedir }}/conf/ owner=root group=root mode=0644
     
     
    接下来会建立用户,启动服务,删除压缩包
    vim   /etc/ansible/nginx_install/roles /install/tasks/install.yml //内容如下
    - name: Create NginxUser
      user: name={{ nginx_user }} state=present createhome=no shell=/sbin/nologin
    - name: Start NginxService
      service: name=nginx state=restarted
    - name: Add Boot Start NginxService
      shell: chkconfig --level 345 nginx on
    - name: Delete Nginxcompression files
      shell: rm -rf /tmp/nginx.tar.gz
     
     
    再创建main.yml并且把copy和install调用
    vim   /etc/ansible/nginx_install/roles/install/tasks/main.yml //内容如下
    - include: copy.yml
    - include: install.yml
     
     
    到此两个roles:common和install就定义完成了,接下来要定义一个入口配置文件
    vim  /etc/ansible/nginx_install/install.yml  //内容如下
    ---
    - hosts: testhost
      remote_user: root
      gather_facts: True
      roles:
        - common
        - install
     
     
    执行: ansible-playbook /etc/ansible/nginx_install/install.yml
    下载整个样例库   
    git命令,需要yum先安装一下: yum install -y git
     
  • 相关阅读:
    在ubuntu中安装photoshop cs6
    技术博客链接及相关资料
    VIM中括号的自动补全与删除
    ubuntu,jdk安装成功后,点击eclipse,提示信息A Java RunTime Environment (JRE) or Java Development Kit (JDK)
    系统安装
    css实现上下左右布局
    html+css实现选项卡功能
    jsp出现错误can not find the tag directory /web-inf/tags
    数据库类型空间效率探索(二)
    数据库类型空间效率探索(一)
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/7410339.html
Copyright © 2011-2022 走看看