热门标签 | 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


推荐阅读
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 混合云架构在本地与云服务间寻求平衡的有效性探讨
    随着云计算技术的发展,混合多云架构因其灵活性和高效性而备受关注。本文将深入探讨混合多云(简称混合云)如何通过结合本地基础设施与云端资源,为企业提供一个更为平衡且高效的IT解决方案。 ... [详细]
  • 本文详细介绍了如何在Azure DevOps Services和Azure DevOps Server中调整时区设置,以及这些设置对不同功能的影响。 ... [详细]
  • 2017年软件开发领域的七大变革
    随着技术的不断进步,2017年对软件开发人员而言将充满挑战与机遇。本文探讨了开发人员需要适应的七个关键变化,包括人工智能、聊天机器人、容器技术、应用程序版本控制、云测试环境、大众开发者崛起以及系统管理的云迁移。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 近期遇到电脑网络不稳定和游戏时频繁重启的问题,寻求专业建议。网络环境为ADSL调制解调器通过路由器共享给两台电脑使用,怀疑存在ARP攻击或硬件配置问题。希望获得详细的故障排查和解决方案。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
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社区 版权所有