热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Ansible一步一步从入门到精通(三)

一:构建测试环境,如下安装上一篇博客的方法配置3台服务器我的地址分别是:10.0.0.130(app1)10.0.0.131(app2)10.0.0.141(db)650)this.wi

一:构建测试环境,如下

安装上一篇博客的方法配置3台服务器

我的地址分别是:

10.0.0.130(app1)

10.0.0.131(app2)

10.0.0.141(db)

wKioL1fCPh2QLx31AABaO5BBQLs291.jpg-wh_50


配置资源文件

[example]10.0.0.132

[app]
10.0.0.130
10.0.0.131

[db]
10.0.0.141

[multi:children]
app
db


二:AD-HOC命令使用

查看每个服务器的主机名

$ ansible multi -a "hostname"


使用一个线程执行命令,相当于顺序在每个服务器上运行(默认5个线程执行)

$ ansible multi -a "hostname" -f 1


查看你的环境情况:

查看磁盘使用情况

$ ansible multi -a "df -h"

查看内存使用情况

$ ansible multi -a "free -m"

查看时间是否准确

$ ansible multi -a "date"

如果时间不一致,可以使用ntpdate 同步一下

$ ansoble multi -a "ntpdate cn.pool.ntp.org"


三:配置两台应用服务器

前提是安装好epel源和centos base源(可以使用阿里云的镜像源)

$ ansible app -m yum -a "name=MySQL-python state=present"$ ansible app -m yum -a "name=python-setuptools state=present"$ ansible app -m easy_install -a "name=django"


测试django是否安装正确

root@~#  ansible app -a "python -c 'import django; print django.get_version()'"10.0.0.131 | success | rc=0 >>1.1010.0.0.130 | success | rc=0 >>1.10


四:配置数据库服务器

$ ansible db -m yum -a "name=mysql-server state=present"$ ansible db -m service -a "name=mysqld state=started enabled=yes"


配置数据库用户django,并且赋予权限

$ ansible db  -m yum -a "name=MySQL-python state=present"$ ansible db  -m mysql_user -a "name=django host=% password=12345 \priv=*.*:ALL state=present


五:限制命令只在一个服务器上生效

$ ansible app  -a "service ntpd restart" --limit "10.0.0.132"
# Limit hosts with a simple pattern (asterisk is a wildcard).$ ansible app  -a "service ntpd restart" --limit "*.4"#以4结尾的ip地址,将会执行命令
# Limit hosts with a regular expression (prefix with a tilde).$ ansible app  -a "service ntpd restart" --limit ~".*\.4"#使用正则表达式匹配主机


六:管理系统用户和组

系统添加admin组

$ ansible app  -m group -a "name=admin state=present"

系统添加jwh566用户

$ ansible app  -m user -a "name=jwh5566 group=admin createhome=yes"

删除系统用户

$ ansible app  -m user -a "name=jwh5566 state=absent remove=yes"


七:管理文件和目录

获取文件的信息,权限,所有者等

$ ansible multi -m stat -a "path=/etc/environment"

复制文件到服务器

$ ansible multi -m copy -a "src=/etc/hosts dest=/tmp/hosts"

从服务器接收文件(接收到控制机)

$ ansible multi  -m fetch -a "src=/etc/hosts dest=/tmp"

创建目录

$ ansible multi -m file -a "dest=/tmp/test mode=644 state=directory"

创建符号链接

$ ansible multi -m file -a "src=/src/symlink dest=/dest/symlink \owner=root group=root state=link"

删除目录和文件

$ ansible multi -m file -a "dest=/tmp/test state=absent"


八:运行后台任务

-B 指定运行任务的最大时间

-P 指定多久时间去一次服务器查看任务执行的状态


异步更新服务器(根据系统情况,可能需要很长时间)

$ ansible multi  -B 3600 -a "yum -y update"    background launch...        10.0.0.132 | success >> {    "ansible_job_id": "763350539037",    "results_file": "/root/.ansible_async/763350539037",    "started": 1


如果说后台任务还在运行,使用下面的命令查看运行状态

$ ansible multi -m async_status -a "jid=763350539037"


九:检查日志文件

$ ansible multi  -a "tail /var/log/messages"


如果需要grep,需要使用shell模块

root@~#  ansible multi  -m shell -a "tail /var/log/messages | \ grep ansible-command | wc -l"10.0.0.131 | success | rc=0 >>210.0.0.130 | success | rc=0 >>210.0.0.141 | success | rc=0 >>6

这个命令显示每台服务器分别执行了几次ansible命令


十:管理crontab 任务

$ ansible multi  -m cron -a "name='daily-cron-all-servers' \hour=4 job='/path/to/daily-script.sh'"

可以使用这个配置ntp 任务


删除crontab任务

$ ansible multi  -m cron -a "name='daily-cron-all-servers' state=absent"



总结:

第三章,到此为止,你已经能够配置一个常用的基础架构,并且能够熟练使用常用的模块,

下一章,将会深入介绍playbook的使用。

本文出自 “Linux is belong to you” 博客,请务必保留此出处http://jwh5566.blog.51cto.com/7394620/1843477


推荐阅读
  • 阿里巴巴DevOps实践指南 | 云端开发
    开发者工具打造围绕开发者全生命周期的工具产品https:developer.aliyun.comtool?spma1z389.11499242.0.0.654524137BG3J ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Ubuntu下怎么安装docker-ce
    这篇文章主要介绍“Ubuntu下怎么安装docker-ce”,在日常操作中,相信很多人在Ubuntu下怎么安装docker-ce问题上存在疑惑,小编查阅了各式资料,整 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
author-avatar
WenFJ
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有