使用Ansible来操作服务器

首先

Ansible是一种配置管理工具。
简单来说,它是一种工具,如果你编写了一个操作手册,它可以自动通过SSH连接到服务器并进行各种配置。
据说还可以同时对多个服务器执行命令。
这次,我打算把从个人电脑(mac)到服务器(cent os)执行shell命令作为目标。

準備的物品 de

暂时先准备好必要的文件。

xx.xxx.xxx.xxx

请将IP地址记录在hosts文件中。
使用ssh连接到上述地址。

- hosts: xx.xxx.xxx.xxx
  connection: ssh

  tasks:
   - name: test
     shell: cd /var/hoge && mkdir test

请在shell中输入您想要执行的命令。
据说您可以在这个yml文件中编写各种命令。
请将hosts和packages.yml文件存放在适当的目录中。

建立程序

    • Homebrewをインストールする

 

    •  ※既にインストール済みであればスキップしてください。

brew install ansibleでansibleをインストールする
以下のようなエラーが出る場合

Error: Your Command Line Tools are too outdated.
Update them from Software Update in System Preferences.

If that doesn't show you any updates, run:
  sudo rm -rf /Library/Developer/CommandLineTools
  sudo xcode-select --install

Alternatively, manually download them from:
  https://developer.apple.com/download/all/.
You should download the Command Line Tools for Xcode 14.2.

请按照以下顺序执行命令:
请先执行sudo rm -rf /Library/Developer/CommandLineTools,
然后执行sudo xcode-select –install。

    • 以下のコマンドでansibleからサーバに接続できるかテストする。

 

    • ansible-console –inventory xx.xxx.xxx.xxx, –user xxxxx

 

    lsコマンドを実行する。
xx.xxx.xxx.xxx | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: xxx@xx.xxx.xxx.xxx: Permission denied (publickey,password).",
    "unreachable": true
}

如果发生类似的错误,请尝试以下命令:
ansible-console –inventory xx.xxx.xxx.xxx, –user xxx –ask-pass
然后输入服务器的密码并执行ls命令。
※此处的user是服务器的用户ID。

xx.xxx.xxx.xxx | FAILED | rc=-1 >>
to use the 'ssh' connection type with passwords or pkcs11_provider, you must install the sshpass program

如果出现上述错误,请执行以下命令:
请运行brew install hudochenkov/sshpass/sshpass进行安装。
安装完成后,请再次运行以下命令:
ansible-console –inventory xx.xxx.xxx.xxx –user xxx –ask-pass
然后输入服务器密码并执行ls命令。

xx.xxx.xxx.xxx | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

只要按照上述所述,出现“SUCCESS”就可以了。

    • hosts、packages.ymlがあるディレクトリに移動して、以下のコマンドを実行します。

 

    • ansible-playbook -i hosts packages.yml –user xxx –ask-pass

 

    • パスワードを聞かれると思うので、サーバのパスワードを入力します。

 

    • あとは、実際にサーバに接続してみて「test」というフォルダが作成されていることを確認してください。

 

    作成されていれば正常にpackages.yml(playbook)が正常に実行されています。
广告
将在 10 秒后关闭
bannerAds