使用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)が正常に実行されています。