chpasswd从面料脚本。另一种选择是在Fabric脚本中使用Pexpect。[xxx.xx.xx.xxx] run: echo "johnsmith:supersecretpassw0rd" | chpasswd。我已经使用Fabric创建了一个 Python 脚本来配置一个新构建的Slicehost Ubuntu 切片。如果您不熟悉 Fabric,它会使用Python SSH2 客户端Paramiko来提供“用于应用程序部署或系统管理任务”的远程访问。
我让Fabric脚本做的第一件事就是创建一个新的管理员用户并设置他们的密码。与Pexpect不同,Fabric 无法处理远程系统上的交互式命令,因此我需要以非交互式方式设置用户密码。目前,我正在使用该chpasswd命令,该命令以明文形式读取用户名和密码。
# Fabric imports and host configuration excluded for brevity
root_password = getpass.getpass("Root's password given by SliceManager: ")
admin_username = prompt("Enter a username for the admin user to create: ")
admin_password = getpass.getpass("Enter …Run Code Online (Sandbox Code Playgroud) 我之前有一些带有负载均衡器的码头服务器。现在我想在不停机的情况下更新我的应用程序。当一个码头停机并且不再可达时,负载均衡器会自动将其从列表中删除,所以这不是问题。
主要问题是避免停机时间:因此,我必须确保一次只有一个码头重新启动 - 或者确保至少有 N 个码头在线!
目前我正在使用一个简单的 bash 脚本,我需要手动等待一个码头重新上线,然后再重新启动下一个码头等等。
现在 bash 对于这类东西并不是很理想,我希望有更适合使整个任务自动化的工具。例如http://jetty-number-n.com/ping,如果第 n 个码头在线,我可以使用一个简单的 ping URL响应 OK (200)。
我如何解决这个任务以及使用哪种工具?
感谢@ceejayoz,我找到了 ansible 的滚动更新。但它仍然不是最理想的,因为我需要设置一个固定的超时时间。
我想知道您对面料脚本的体验如何?觉得有用吗?是否有用于此的示例脚本?复制、设置服务等
我知道有木偶和厨师,但我正在寻找不使用客户端/服务器设置来部署、设置服务器等的东西
你的意见?
我有一个大约 50 个 ubuntu 节点的集群,这些节点目前正在运行特立独行的版本。我想将它们升级到 oneiric,但我在选择合适的工具时遇到了困难。
我知道 ubuntu 有“无人值守升级”实用程序,但它仅用于安全升级,不能切换整个版本。有什么类似的可以吗?
现在看来,唯一的选择是使用像 fabric/pssh/capistrano 这样的东西,并让它在每台服务器上运行“do-release-upgrade”。但是“do-release-upgrade”是交互式的,在升级过程中需要用户的一些输入。“do-release-upgrade”工具似乎没有任何 --unattended 参数。
在这样的情况下你会使用什么样的策略?
谢谢!
目前,我正在使用以下手动过程将我的 PHP 网站从登台部署到生产:
整个过程非常复杂,大约需要 5-10 分钟,我每次对网站进行更改时都必须这样做,因此它变成了一件苦差事。
现在有没有办法使用一些脚本工具来自动化这个过程?或者是否有一个很好的部署工具,人们可以使用它来完成所有这些工作?我的临时和生产机器是基于 Ubuntu 12.04 服务器的,所以我可能可以使用 bash 脚本来完成一些工作。
我可以看到到目前为止可以进行的一些改进是:
我工作过的一家公司使用Fabric 命令行工具来自动化部署和做这种事情。但是,这是一个不错的选择还是有更好的工具?
我正在尝试组合一个结构脚本,该脚本通过 API 创建一个虚拟实例,然后在该实例上运行 puppet。我有一个创建 VM 的任务,以及一个可以“引导”VM 的任务。但是,我很难将这些链接在一起,因为我不确定如何将第一个任务中生成的一些数据作为主机名传递到第二个任务中。例如
def createVM():
newhostname = local('/usr/bin/createVM')
bootstrap(newhostname)
def bootstrap(hostname):
env.hosts = [hostname]
run('puppet agent -t')
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,如果我只是执行fab createVM.
这样做的最佳方法是什么?
我希望有一个轻量级的命令行实用程序,可以用来从头开始设置服务器。
我喜欢 python 的结构或 ruby 的 capistrano,但从我读到的内容来看,它们更多地用于部署目的,而不是设置 apache、mysql、更新补丁等。
我知道还有其他工具,如 puppet,但我不想为服务器等设置主/从,我希望有一个更轻量级的工具。
这是一个奇怪的错误,我不确定它来自哪里。这是我正在做的事情的快速总结。
我正在尝试使用 s3fs(FUSE over Amazon)将 FUSE 驱动器安装到运行 Ubuntu 10.10 的 Amazon EC2 实例。s3fs 是根据说明等从源代码编译的。我还在 /etc/fstab 中添加了一个条目,以便驱动器在启动时安装。这是/etc/fstab看起来的样子:
# /etc/fstab: static file system information.
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
LABEL=uec-rootfs / ext4 defaults 0 0
/dev/sda2 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
/dev/sda3 none swap sw,comment=cloudconfig 0 0
s3fs#mybucket /mnt/s3/mybucket fuse default_acl=public-read,use_cache=/tmp,allow_other 0 0
Run Code Online (Sandbox Code Playgroud)
所以好消息是这很好用。重新启动时,连接正确安装。我也可以这样做:
$ sudo umount /mnt/s3/mybucket
$ sudo mount -a
$ mountpoint /mnt/s3/mybucket
/mnt/s3/mybucket is a mountpoint
Run Code Online (Sandbox Code Playgroud)
很棒,对吧? …
fabric ×8
automation ×2
deployment ×2
linux ×2
puppet ×2
python ×2
ssh ×2
ansible ×1
capistrano ×1
cluster ×1
fuse ×1
rsync ×1
s3fs ×1
scripting ×1
ubuntu ×1
web-server ×1