У нас есть тот же сценарий, где playbooks разделяют роли.
Мы рассмотрели:
В конце мы пошли для ни то, ни другое: каждая ваша книга включает в себя roles/
символическую ссылку на родительскую папку всех наших ролей.
Таким образом, книга воспроизведения всегда ссылается на последнюю версию (в настоящее время проверенную) роли.
Ансибл продолжает ссылаться на определенный SHA1 пьесы, но консенсус остается: всегда используйте самую последнюю из ролей. Без управления какими-либо конкретными ссылками на Git (когда речь идет о репозиториях Git для каждой роли)
Поправьте меня, если я не прав, но вы можете использовать LogonUser для олицетворения локальной группы также не только доменные учетные записи.
Imports System
Imports System.Runtime.InteropServices
Imports System.Security.Principal
Imports System.Security.Permissions
Public Class Form1
<DllImport("advapi32.DLL", SetLastError:=True)> _
Public Shared Function LogonUser(ByVal lpszUsername As String, ByVal lpszDomain As String, _
ByVal lpszPassword As String, ByVal dwLogonType As Integer, ByVal dwLogonProvider As Integer, _
ByRef phToken As IntPtr) As Integer
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim admin_token As IntPtr
Dim wid_current As WindowsIdentity = WindowsIdentity.GetCurrent()
Dim wid_admin As WindowsIdentity = Nothing
Dim wic As WindowsImpersonationContext = Nothing
Try
MessageBox.Show("Copying file...")
If LogonUser("Local Admin name", "Local computer name", "pwd", 9, 0, admin_token) <> 0 Then
wid_admin = New WindowsIdentity(admin_token)
wic = wid_admin.Impersonate()
System.IO.File.Copy("C:\right.bmp", "\\157.60.113.28\testnew\right.bmp", True)
MessageBox.Show("Copy succeeded")
Else
MessageBox.Show("Copy Failed")
End If
Catch se As System.Exception
Dim ret As Integer = Marshal.GetLastWin32Error()
MessageBox.Show(ret.ToString(), "Error code: " + ret.ToString())
MessageBox.Show(se.Message)
Finally
If wic IsNot Nothing Then
wic.Undo()
End If
End Try
End Sub
End Class
WNetAddConnection2 добьется цели. Просто используйте пустую строку для имени локального устройства, чтобы избежать сопоставления диска. Вы также хотите убедиться и закрыть соединение , когда закончите. Я обернул его в класс NetworkConnection, который реализует IDisposable.