如何准备由Ansible工具管理的FreeBSD服务器

时间:2020-01-09 10:39:33  来源:igfitidea点击:

我知道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