Bash Framwork 是一个最小集合的Bash脚本编程框架,主要面向 DevOps 管理任务。
因此,默认的函数集合中包含了像 package-install, is_package_installed, if_ubuntu, if_centos, is_root 这类辅助函数。
通过如下的脚本可以将 Bash Framwork 部署到目标机上:
curl -sSL https://hedzr.com/bash-framework/installer | sudo bash -s默认的安装位置是 /usr/local/bin/ops-fw/,并包含一个引导性的脚本 /usr/local/bin/bash-framework / ops。
当安装完成后应该重新登录到目标机的shell环境中,以便 Bash Framwork 基础环境自动加载。
一旦安装成功,你可以通过 bash-framework/ops 来启动主控脚本,具体方法详见:
bash-framework -v
bash-framework --help
bash-framework help
bash-framework usage在目标机上已经有了 Bash Framwork 的基本源代码,你可以复制以下内容到你的工作目录中,然后进行自定义开发:
mkdir my-work && cd -
cp -R /usr/local/bin/ops-fw/* ./
cp /usr/local/bin/bash-framework ./my-ops也可以直接 git clone https://github.com/hedzr/bash-framework/ 后开始你的自定义工作。
- 下载脚本包的全部文件到
/usr/local/bin及其子目录ops-fw - 使能主文件 bash-framework 可执行
- 建立名为
ops的符号链接,可以更便利地使用引导脚本bash-framework - 在当前用户的
$HOME/.bashrc中追加bash-framwork环境,包括:- PS1颜色
- 登录时信息
ii(由at-login载入) - 基本环境配置,提供一组别名和函数以加速命令行操作
整个工具集的所有功能性命令,均通过 home 命令 ops 来引导。
DONE:ops指令具有自动补全机制,从输入“ops”开始渐进地获得帮助。
ops
ops help
ops version [-r]
ops upgrade
ops install|config|tune [...]
ops nginx|... install|tune
ops backup|restore foreman|dns|puppet|...
# NOTE: restore功能并未实现ops install-nginx
ops tune-nginx
或者:
ops nginx install|tune略
请确保安装了 bash-completion 软件包且为当前用户激活了该机制。
一般地,多数发行版都已经预装了 bash-completion 软件包,你可以确认它,也可以(通常)再度安装:
# centos / redhat
yum install -y --enablerepo=epel bash-completion
dnf install bash-completion
# ubuntu / debian
apt-get install bash-completion
apt install bash-completion # Ubuntu 16检查 $HOME/.bashrc 文件内容,确定以下内容是有效且未被注释的:
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
不同系统可能略有出入,但一定会 . /etc/bash_completion。
/etc/bash_completion 将会装载 /etc/bash_completion.d/*,包括 /etc/bash_completion.d/ops_ac,这是 Bash Framework 的引导命令 ops 的自动完成供给者。
辅助性命令的特点是无需任何前置引导。
通常,可以在root身份下直接使用。
例如:
$ hostnames
hostname: sw0ops00.ops.local
fqdn: sw0ops00.ops.local
all-fqdn: sw0ops00.ops.local
short: sw0ops00
domain: ops.local
alias: sw0ops00这些辅助性的helpers, 均可借助bash命令行自动完成机制简化你的输入,例如输入“if”试试。
if[not_]os [linux|darwin|cygwin|...] if_nix [gnu|bsd|sun]
注意这三个测试目前只能在AWS CN中正确使用,尚未具体完成。
快速的查看服务器关键性基本信息。
$ ii
You are logged on : sw0vvv00.ops.local
Additionnal information : Linux sw0vvv00.ops.local 4.4.35-33.55.amzn1.x86_64 #1 SMP Tue Dec 6 20:30:04 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Current date : 2017年 02月 15日 星期三 01:12:12 UTC
Machine stats : 01:12:12 up 16:02, 1 user, load average: 0.00, 0.00, 0.00
Local IP Address : *.*.16.10 / eth0
use: 'ip-wan' to query the public ip address of mine.
avaliable commands: disc-info, ports, ii, ip-wan, ip-lan, ip-gw, ip-mask, ip-subnet, ....基本服务器信息查询命令
is_root is_in_source if_launched_from_symlink is_bash is_bash_t2 is_zsh is_interactive_shell is_not_interactive_shell is_ps1 is_not_ps1 is_stdin is_not_stdin is_package_installed is_packages_all_installed is_packages_any_installed is_package_lower package-list # 仅centos/yum可用 package-list-installed install_packages / install-packages / package-install
Bash Framework 适合于要开发大量shell脚本的编程人员,我们提供了一个基本的命令组织结构,以及安装和分发模型,你可以在此基础上展开自己的业务逻辑开发,并在任一服务器上快速分发你的脚本集合。
Bash Framework 基于作者历年来经验进行了提炼,希望能帮助到 ops/devops 工具作者或者其他人。
MIT
Hedzr