{"id":49436,"date":"2025-05-22T07:22:47","date_gmt":"2025-05-22T07:22:47","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=49436"},"modified":"2025-05-22T07:22:47","modified_gmt":"2025-05-22T07:22:47","slug":"guide-to-add-and-use-a-windows-node-in-rundeck-installed-on-a-linux-server","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/guide-to-add-and-use-a-windows-node-in-rundeck-installed-on-a-linux-server\/","title":{"rendered":"Guide to add and use a Windows node in Rundeck installed on a Linux server"},"content":{"rendered":"\n<p>Here\u2019s a <strong>step-by-step guide<\/strong> to add and use a <strong>Windows node<\/strong> in <strong>Rundeck installed on a Linux server<\/strong>, using <strong>WinRM<\/strong> (Windows Remote Management), which is the most common way to connect from Linux to Windows.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udde9 Prerequisites<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Requirement<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>\u2705 Windows machine<\/td><td>Windows 10\/11 or Server with WinRM enabled<\/td><\/tr><tr><td>\u2705 Rundeck installed on Linux<\/td><td>Any recent version of Rundeck (Community is fine)<\/td><\/tr><tr><td>\u2705 Network reachability<\/td><td>Linux (Rundeck) must reach the Windows node on port <strong>5985 (HTTP)<\/strong> or <strong>5986 (HTTPS)<\/strong><\/td><\/tr><tr><td>\u2705 PowerShell enabled on Windows<\/td><td>For remote execution<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd27 Step 1: Enable WinRM on Windows Node<\/h2>\n\n\n\n<p>Open <strong>PowerShell as Administrator<\/strong> on the Windows machine and run:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">winrm quickconfig\n<\/code><\/span><\/pre>\n\n\n<p>If prompted, choose <code>y<\/code> to make the changes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Optional (Allow unencrypted + Basic Auth):<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">winrm set winrm\/config\/service <span class=\"hljs-string\">'@{AllowUnencrypted=\"true\"}'<\/span>\nwinrm set winrm\/config\/service\/auth <span class=\"hljs-string\">'@{Basic=\"true\"}'<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u26a0\ufe0f This is for testing. For production, <strong>use HTTPS with a certificate<\/strong>.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udda5 Step 2: Create Windows Node Entry in Rundeck<\/h2>\n\n\n\n<p>Go to:<br><strong>Rundeck \u2192 Project Settings \u2192 Edit Nodes \u2192 Add a Node (Manually)<\/strong><\/p>\n\n\n\n<p>Or edit your <code>resources.yaml<\/code>\/<code>resources.xml<\/code> (depending on project config).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sample YAML Entry (<code>resources.yaml<\/code>):<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">- nodename: win-node01\n  <span class=\"hljs-attr\">hostname<\/span>: <span class=\"hljs-number\">192.168<\/span><span class=\"hljs-number\">.1<\/span><span class=\"hljs-number\">.50<\/span>\n  <span class=\"hljs-attr\">osFamily<\/span>: windows\n  <span class=\"hljs-attr\">osName<\/span>: Windows\n  <span class=\"hljs-attr\">description<\/span>: Windows Node <span class=\"hljs-keyword\">for<\/span> Deployment\n  <span class=\"hljs-attr\">tags<\/span>: windows\n  <span class=\"hljs-attr\">username<\/span>: Administrator\n  winrm-auth-type: basic\n  winrm-protocol: http\n  winrm-port: <span class=\"hljs-number\">5985<\/span>\n  winrm-ssl: <span class=\"hljs-literal\">false<\/span>\n  winrm-certificate-check: <span class=\"hljs-literal\">false<\/span>\n  winrm-password-storage-path: keys\/project\/windows-password\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Store the password in Rundeck Key Storage:<\/h3>\n\n\n\n<p>Go to:<br><strong>Rundeck \u2192 Key Storage \u2192 Add Key \u2192 Password \u2192 Path:<\/strong> <code>keys\/project\/windows-password<\/code><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2699\ufe0f Step 3: Configure Project for WinRM Plugin<\/h2>\n\n\n\n<p>Make sure WinRM is supported in your project:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Project Settings \u2192 Edit Configuration<\/strong><\/li>\n\n\n\n<li>Add or verify:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">project.node.executor.<span class=\"hljs-keyword\">default<\/span>=overthere-winrm\nproject.remote.file-copy.<span class=\"hljs-keyword\">default<\/span>=overthere-winrm\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This ensures file copy and command execution use WinRM.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udce6 Step 4: Install WinRM Plugin (if missing)<\/h2>\n\n\n\n<p>If WinRM plugin isn&#8217;t preinstalled, download it:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/rundeck-plugins\/rundeck-winrm-plugin\" target=\"_blank\" rel=\"noopener\">Rundeck WinRM Plugin GitHub<\/a><\/li>\n<\/ul>\n\n\n\n<p>Steps:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Download the <code>.jar<\/code><\/li>\n\n\n\n<li>Place it in <code>\/var\/lib\/rundeck\/libext\/<\/code><\/li>\n\n\n\n<li>Restart Rundeck:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">sudo systemctl restart rundeckd\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 Step 5: Test Node Connectivity<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to <strong>Nodes \u2192 win-node01 \u2192 Test Connection<\/strong><\/li>\n\n\n\n<li>If it fails, check:\n<ul class=\"wp-block-list\">\n<li>Network access (ping\/port 5985)<\/li>\n\n\n\n<li>Credentials (Administrator or other user with permissions)<\/li>\n\n\n\n<li>WinRM config on Windows<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\ude80 Step 6: Run a Command on Windows Node<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Commands<\/strong><\/li>\n\n\n\n<li>Select Node: <code>win-node01<\/code><\/li>\n\n\n\n<li>Command:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Get-Process\n<\/code><\/span><\/pre>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Output should appear in the Rundeck UI.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 Troubleshooting Tips<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Problem<\/th><th>Fix<\/th><\/tr><\/thead><tbody><tr><td>WinRM connection refused<\/td><td>Make sure port 5985 is open and WinRM is configured<\/td><\/tr><tr><td>Authentication failure<\/td><td>Ensure username\/password are correct; check storage path<\/td><\/tr><tr><td>Plugin not found<\/td><td>Check if the WinRM plugin JAR is in <code>libext\/<\/code> and restart Rundeck<\/td><\/tr><tr><td>Firewall issues<\/td><td>Open WinRM ports on the Windows Firewall<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s a step-by-step guide to add and use a Windows node in Rundeck installed on a Linux server, using WinRM (Windows Remote Management), which is the most common way to&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-49436","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=49436"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49436\/revisions"}],"predecessor-version":[{"id":49437,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49436\/revisions\/49437"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=49436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=49436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=49436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}