如何准备由Ansible工具管理的FreeBSD服务器
我知道Ansible默认使用SSH管理Linux服务器。
我以为FreeBSD服务器在云中运行也不例外。
但是,我遇到了问题。
我无法使用Ansible DevOps/IT自动化工具来管理新创建的FreeBSD服务器。
如何使用Ansible管理我的FreeBSD服务器?
简介Ansible是易于使用的IT自动化和DevOps工具。
可以将其用于自动化任务。
您可以使用Ansible轻松配置和管理FreeBSD服务器。
Ansible可在由macOS,Linux或* BSD系列操作系统支持的控制工作站上工作。
控制工作站通过基于ssh的会话将命令并行发送到多个本地/远程服务器。
您只需要在控制工作站和远程服务器上安装ssh和python。
使用Ansible管理FreeBSD服务器的设置示例
其中:
- 位于192.168.1.107的控制机器。它必须安装ssh客户端,Python和Ansible软件。控制机器可以由macOS,Linux发行版或BSD操作系统(例如FreeBSD)提供动力。
- 控制机器(Ansbile软件)将向多个目标机器并行发送命令。 192.168.1.100、192.168.1.101、192.168.1.102等都是由不同操作系统提供动力的服务器。
在Ansible的远程FreeBSD服务器上的用户管理设置
让我们看看所有步骤。
您必须在FreeBSD上启用OpenSSH服务器
使用以下命令验证它:
% service -e | grep sshd
如果未在FreeBSD上启用OpenSSH服务器,请执行以下命令以在启动时激活并启动它:
# echo 'sshd_enable="YES"' >> /etc/rc.conf # service sshd start
您必须在FreeBSD服务器上安装sudo
运行以下命令:
% type sudo
如果未找到sudo命令,请使用以下pkg命令安装它:
# pkg install sudo
允许组轮成员执行任何命令:
# echo '%wheel ALL=(ALL) ALL' >/usr/local/etc/sudoers.d/allow-wheel-user-login
确保普通用户是车轮组的一部分
使用id命令查找用户组成员身份:
% id Hyman `uid=1001(Hyman) gid=1001(Hyman) groups=1001(Hyman)`
如您所见,千斤顶用户不属于车轮组。
使用pw命令将用户千斤顶添加到轮组
# pw usermod -n Hyman -G wheel # id Hyman `uid=1001(Hyman) gid=1001(Hyman) groups=1001(Hyman),0(wheel)`
安装Python 2.x或Python 3.x
最终要求是在FreeBSD服务器上安装Python。
# pkg install python36
或者
# pkg install python27
请记下Python的路径:
% type python2.7 `python2.7 is /usr/local/bin/python2.7` % type python3.6 `python3.6 is /usr/local/bin/python3.6`
如何准备由Ansible工具管理的FreeBSD服务器
首先在控制计算机上创建列表文件,如下所示:
$ vi hosts
添加所有远程FreeBSD/Linux服务器的主机名/IP地址:
[myhosts] 192.168.1.100 192.168.1.101 192.168.1.102
或者
[myhosts] freebsd11-theitroad freebsd-jail-1
测试FreeBSD Ansible设置
让我们在以上两台主机上运行uptime命令和hostname命令,即以用户Hyman身份运行myhosts组:
$ ansible -u Hyman -i hosts -m raw -a 'uptime' myhosts $ ansible -u Hyman -i hosts -m raw -a 'hostname' myhosts
因此,您准备了由Ansible管理的FreeBSD服务器。
现在,可以使用Ansible剧本(Playbook)做其他事情,例如安装软件包,更新软件包,升级FreeBSD等等。
编写您的第一本Ansible剧本(Playbook)来管理FreeBSD服务器
首先,更新您的主机文件以指示在远程服务器上成为sudo的用户名和方法。
这是用cat命令显示的更新后的主机文件:
$ cat hosts
输出示例:
# Setup the user name # Enable sudo usage # Setup ansible of the binary's location, through the ansible_python_interpreter inventory variable [all:vars] ansible_user='Hyman' ansible_become=yes ansible_become_method=sudo ansible_python_interpreter='/usr/bin/env python3.6' [myhosts] freebsd11-box freebsd-jail-1
剧本(Playbook)不过是在控制服务器上执行的脚本/命令而已。
使用文本编辑器(例如ee命令或vim命令),如下创建名为freebsd-pkg.yml的剧本(Playbook)
$ vim freebsd-pkg.yml
# Install common packages on all FreeBSD server such as # bash, vnstat, htop and more - hosts: myhosts tasks: - name: Add packages on FreeBSD pkgng: name: rsync,bash,most,bash-completion,vnstat,htop,wget,curl
在控制服务器上运行,如下所示:
$ ansible-playbook --ask-become-pass -i hosts freebsd-pkg.yml